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相关推荐

  1. 使用node连接MongoDB的工具安装及配置

    MongoDB的使用 Mac安装: https://www.cnblogs.com/weixuqin/p/7258000.html MongoDB的可视化工具: https://robomongo.o ...

  2. node 连接mongodb 1

    Node.js连接MongoDB 一些介绍 mongodb https://www.npmjs.com/package... github项目地址 https://github.com/mongodb ...

  3. 跟我一起用node-express搭建一个小项目(node连接mongodb)[三]

    数据库虽然安装并启动成功了,但我们需要连接数据库后才能使用数据库. 怎么才能在 Node.js 中使用 MongoDB 呢? 我们使用官方提供的 node-mongodb-native 驱动模块,打开 ...

  4. 【node】node连接mongodb操作数据库

    1.下载第三方模块mongodb cnpm install mongodb --save 2.检测是否连接成功 1.引入第三方模块mongodb并创建一个客户端const MongoClient = ...

  5. Node连接MySQL并封装其增删查改

    Node连接Mysql 说到node,可能大家会想到MOngoDB作为数据库,这里将会介绍node与mysql的连接,并分享了封装好的实例代码,在项目开发中可直接使用.下一篇博客将会讲node连接Mo ...

  6. Node.js详解(四):连接MongoDB

    文章目录 一.安装MongoDB访问驱动 二.连接数据库 三.添加数据 四.添加多条数据 五.修改数据 六.查询数据 1.查询单条记录 2.查询多条记录 七.删除数据 八.完整示例代码 1.路由 Ap ...

  7. 【Part2】用JS写一个Blog (node + vue + mongoDB)

    [Part1]用JS写一个Blog (node + vue + mongoDB) 上一节前后端项目分别初始化完成,这一小节我就从后端项目开始写.实现mongoDB数据库的连接. 整理后端目录 下面是通 ...

  8. 为一个 iOS 应用编写一个简单的 Node.js/MongoDB Web 服务

    原文链接:https://github.com/nixzhu/dev-blog/blob/master/2014-04-21-write-a-simple-nodejs-mongodb-web-ser ...

  9. node+express+mongodb初体验

    从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...

最新文章

  1. workerman源码分析之启动过程
  2. 【Python学习系列五】Python网络爬虫框架Scrapy环境搭建
  3. Leetcode:371.Sum Of Two Integer
  4. Final Cut Pro模版网站
  5. 找不到文件、主类名和文件名不一致、缺少分号的解决方法
  6. Scrapy定向爬虫教程(二)——提取网页内容
  7. python中queue使用_在python2.6中使用Queue类
  8. html标签书写注意事项,HTML一些标签注意事项
  9. 自定义事件(如未作说明,本博客文档都是用C#代码)
  10. 如何用hypermesh生成包含interface的流体网格
  11. 迭代器模式C++实现
  12. SSM使用拦截器功能
  13. java -jar 指定main,java打包成jar并执行jar包中指定的main方法
  14. Pure Storage到底是一家怎样的企业?
  15. 使用Caffe框架训练模型
  16. java实现压缩包嵌套压缩包的下载
  17. 神仙打架!清华公布2020特奖候选人名单,有人三篇顶会一作,还有人...
  18. QQ音乐中任何歌曲完全免费下载方法
  19. 苹果手机投影到墙上_电视VS投影仪,你会选哪个?
  20. 抓取网易云评论,生成词云图

热门文章

  1. Memcached命令-存储命令-查找命令-清理命令
  2. 设计模式:单件模式(Singleton Pattern)
  3. George Fox谈Adobe开发者社区与HTML5内容建设
  4. 利用INF安装服务启动 及 浅析瑞星行为检测、360主动防御
  5. mysql limit offset很大_MySQL查询中LIMIT的大offset导致性能低下浅析
  6. vivo X21i的usb调试模式在哪里,打开vivo X21iusb调试模式的经验
  7. [译]JavaScript async / await:好处、坑和正确用法
  8. Infor与Marketo®合作,帮助全球企业实现客户体验变革
  9. laravel 淘宝 NPM 镜像
  10. hive shell 导入数据