node 连接mongodb
Node.js连接MongoDB
一些介绍
mongodb https://www.npmjs.com/package/mongodb
github项目地址 https://github.com/mongodb/node-mongodb-native
属于官方提供的mongodb驱动
文档 http://mongodb.github.io/node-mongodb-native/3.1/api/
项目主页 http://mongodb.github.io/node-mongodb-native/
属于一个轮子,已经造好了
安装mongodb
PS C:\Users\mingm\Desktop\node> npm install mongodb --save
npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\node\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\node\package.json'
npm WARN node No description
npm WARN node No repository field.
npm WARN node No README data
npm WARN node No license field.+ mongodb@3.1.1
added 7 packages from 5 contributors and audited 7 packages in 108.492s
found 0 vulnerabilitiesPS C:\Users\mingm\Desktop\node>
创建数据库
好吧,因为各种版本的缘故,需要使用新的解析器。所以需要设置options的参数
即
useNewUrlParser: true
2.0的驱动程序
旧版本不需要。
PS C:\Users\mingm\Desktop\node> node test.js
数据库连接建立
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}console.log("数据库连接建立");db.close();
})
连接以后创建了一个mingming的数据库
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
> use local;
switched to db local
>
查询了一下,还没有,因为没有往里面添加数据
创建集合
即,创建一张表
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}console.log("数据库连接建立");var dbase = db.db('mingming'); // 选择数据库为mingmingdbase.createCollection('site', (err, res) => { // 创建数据库为mingming下的site集合if(err) {throw err;}console.log('创建集合!');db.close();});
});
PS C:\Users\mingm\Desktop\node> node test.js
数据库连接建立
创建集合!
PS C:\Users\mingm\Desktop\node>
看一下这张表
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
mingming 0.000GB
> use mingming
switched to db mingming
> show ceoolection;
2018-07-31T23:12:55.014+0800 E QUERY [js] Error: don't know how to show [ceoolection] :
shellHelper.show@src/mongo/shell/utils.js:1043:11
shellHelper@src/mongo/shell/utils.js:755:15
@(shellhelp2):1:1
> show collections;
site
> db.site.find();
>
CURD
插入数据
PS C:\Users\mingm\Desktop\node> node test.js
文档插入成功!
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var myobj = { name:"mingming", url:"www.iming.info" };dbo.collection('site').insertOne(myobj, (err, res) => { // mongodb语法 mingming.site.insert(myObj);if(err) {throw err;}console.log("文档插入成功!");db.close();});
});
> db.site.find();
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "www.iming.info" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" }
>
插入多条数据
> db.site.find().pretty();
{"_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc1"),"name" : "mingming","url" : "www.iming.info","type" : "cn"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc2"),"name" : "google","url" : "www.google.com.hk","type" : "un"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc3"),"name" : "twitter","url" : "www.twitter.com","type" : "un"
}
>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var myobj = [{name:"mingming", url:"www.iming.info" , type:"cn"},{name:"google", url:"www.google.com.hk", type:"un"},{name:"twitter", url:"www.twitter.com", type:"un"},];dbo.collection('site').insertMany(myobj, (err, res) => { // mongodb语法 mingming.site.insert(myObj);if(err) {throw err;}console.log("文档插入成功!");db.close();});
});
PS C:\Users\mingm\Desktop\node> node test.js
文档插入成功!
PS C:\Users\mingm\Desktop\node>
查询数据
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b607e4d5b8ced1c5cb8a7e4,name: 'mingming',url: 'www.iming.info' },{ _id: 5b607e6ee7b6e82d604d5a4d,name: 'mingming',url: 'www.iming.info' },{ _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: 'www.iming.info',type: 'cn' },{ _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' },{ _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');dbo.collection('site').find({}).toArray((err, result) => { // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log(result); // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
> db.site.find().pretty();
{"_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc1"),"name" : "mingming","url" : "www.iming.info","type" : "cn"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc2"),"name" : "google","url" : "www.google.com.hk","type" : "un"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc3"),"name" : "twitter","url" : "www.twitter.com","type" : "un"
}
>
查询指定条件的数据
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b607e4d5b8ced1c5cb8a7e4,name: 'mingming',url: 'www.iming.info' },{ _id: 5b607e6ee7b6e82d604d5a4d,name: 'mingming',url: 'www.iming.info' },{ _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: 'www.iming.info',type: 'cn' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var whereStr = {"name":"mingming"}; // 查询条件dbo.collection('site').find(whereStr).toArray((err, result) => { // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log(result); // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
更新数据
PS C:\Users\mingm\Desktop\node> node test.js
文档更新成功
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var whereStr = {"name":"mingming"}; // 查询条件var updateStr = {$set: {"url": "AmingA"}};dbo.collection('site').updateOne(whereStr, updateStr, (err, result) => { // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log('文档更新成功'); // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
> db.site.find({"name":"mingming"}).pretty();
{"_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"),"name" : "mingming","url" : "AmingA"
}
{"_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc1"),"name" : "mingming","url" : "www.iming.info","type" : "cn"
}
>
mongodb的更新
> db.site.update({"name":"mingming"}, {$set: {"url":""}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.site.find({"name":"mingming"});
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "www.iming.info", "type" : "cn" }
>
更新多条数据
PS C:\Users\mingm\Desktop\node> node test.js
{ n: 3, nModified: 3, ok: 1 }
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var whereStr = {"name":"mingming"}; // 查询条件var updateStr = {$set: {"url": ""}};dbo.collection('site').updateMany(whereStr, updateStr, (err, result) => { // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log(result.result); // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
> db.site.find({"name":"mingming"});
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "", "type" : "cn" }
>
删除数据
同样deleteOne和deleteMany()不在阐述
排序
使用sort()完成排序
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' },{ _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' },{ _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' },{ _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' },{ _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var mysort = { type:-1 }; // 降序dbo.collection('site').find().sort(mysort).toArray((err, result) => {if (err) {throw err;}console.log(result); // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
mongodb语法
> db.site.find({}).sort({type:-1});
{ "_id" : ObjectId("5b6080037aa38239e46c0dc2"), "name" : "google", "url" : "www.google.com.hk", "type" : "un" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc3"), "name" : "twitter", "url" : "www.twitter.com", "type" : "un" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "", "type" : "cn" }
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "" }
>
分页
使用limit,分页和排序使用的统统是通道(一个来自linux的概念)
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' },{ _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
PS C:\Users\mingm\Desktop\node>
跳过指定条数
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' },{ _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');dbo.collection('site').find().skip(2).limit(2).toArray((err, result) => {if (err) {throw err;}console.log(result); // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
随机读取一条数据
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
[ { _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
[ { _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming"; // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');for(var i=0; i<10; i++){dbo.collection('site').aggregate([{$sample: {size:1}}]).toArray((err, result) => {if (err) {throw err;}console.log(result); // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)});};db.close();
});;
使用的同样是管道
博客
www.iming.info
node 连接mongodb相关推荐
- 使用node连接MongoDB的工具安装及配置
MongoDB的使用 Mac安装: https://www.cnblogs.com/weixuqin/p/7258000.html MongoDB的可视化工具: https://robomongo.o ...
- node 连接mongodb 1
Node.js连接MongoDB 一些介绍 mongodb https://www.npmjs.com/package... github项目地址 https://github.com/mongodb ...
- 跟我一起用node-express搭建一个小项目(node连接mongodb)[三]
数据库虽然安装并启动成功了,但我们需要连接数据库后才能使用数据库. 怎么才能在 Node.js 中使用 MongoDB 呢? 我们使用官方提供的 node-mongodb-native 驱动模块,打开 ...
- 【node】node连接mongodb操作数据库
1.下载第三方模块mongodb cnpm install mongodb --save 2.检测是否连接成功 1.引入第三方模块mongodb并创建一个客户端const MongoClient = ...
- Node连接MySQL并封装其增删查改
Node连接Mysql 说到node,可能大家会想到MOngoDB作为数据库,这里将会介绍node与mysql的连接,并分享了封装好的实例代码,在项目开发中可直接使用.下一篇博客将会讲node连接Mo ...
- Node.js详解(四):连接MongoDB
文章目录 一.安装MongoDB访问驱动 二.连接数据库 三.添加数据 四.添加多条数据 五.修改数据 六.查询数据 1.查询单条记录 2.查询多条记录 七.删除数据 八.完整示例代码 1.路由 Ap ...
- 【Part2】用JS写一个Blog (node + vue + mongoDB)
[Part1]用JS写一个Blog (node + vue + mongoDB) 上一节前后端项目分别初始化完成,这一小节我就从后端项目开始写.实现mongoDB数据库的连接. 整理后端目录 下面是通 ...
- 为一个 iOS 应用编写一个简单的 Node.js/MongoDB Web 服务
原文链接:https://github.com/nixzhu/dev-blog/blob/master/2014-04-21-write-a-simple-nodejs-mongodb-web-ser ...
- node+express+mongodb初体验
从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...
最新文章
- workerman源码分析之启动过程
- 【Python学习系列五】Python网络爬虫框架Scrapy环境搭建
- Leetcode:371.Sum Of Two Integer
- Final Cut Pro模版网站
- 找不到文件、主类名和文件名不一致、缺少分号的解决方法
- Scrapy定向爬虫教程(二)——提取网页内容
- python中queue使用_在python2.6中使用Queue类
- html标签书写注意事项,HTML一些标签注意事项
- 自定义事件(如未作说明,本博客文档都是用C#代码)
- 如何用hypermesh生成包含interface的流体网格
- 迭代器模式C++实现
- SSM使用拦截器功能
- java -jar 指定main,java打包成jar并执行jar包中指定的main方法
- Pure Storage到底是一家怎样的企业?
- 使用Caffe框架训练模型
- java实现压缩包嵌套压缩包的下载
- 神仙打架!清华公布2020特奖候选人名单,有人三篇顶会一作,还有人...
- QQ音乐中任何歌曲完全免费下载方法
- 苹果手机投影到墙上_电视VS投影仪,你会选哪个?
- 抓取网易云评论,生成词云图
热门文章
- Memcached命令-存储命令-查找命令-清理命令
- 设计模式:单件模式(Singleton Pattern)
- George Fox谈Adobe开发者社区与HTML5内容建设
- 利用INF安装服务启动 及 浅析瑞星行为检测、360主动防御
- mysql limit offset很大_MySQL查询中LIMIT的大offset导致性能低下浅析
- vivo X21i的usb调试模式在哪里,打开vivo X21iusb调试模式的经验
- [译]JavaScript async / await:好处、坑和正确用法
- Infor与Marketo®合作,帮助全球企业实现客户体验变革
- laravel 淘宝 NPM 镜像
- hive shell 导入数据