上一篇中(mongoDB初阶系列一:用户和权限)介绍了用户和权限,这一篇将介绍如何在node中进行增删改查。node
首先,要在node中使用mongoDB,须要安装MongoDB Driver,命令以下:npm install mongodb --save
github地址:node-mongodb-nativegit
同时,记得开启mongoDB服务。github
下面代码将在数据库demodb中tasks集合里面插入了一条文档,而且在控制台打印出了该文档的id。mongodb
const MongoClient = require('mongodb').MongoClient const assert = require('assert') const url = 'mongodb://localhost:27017' const dbName = 'demodb' // 增 MongoClient.connect(url, function(err, client) { assert.equal(null, err) console.log("Connected successfully to server") const db = client.db(dbName) var tasks = db.collection('tasks') // 没有则建立 tasks.insertOne( { "project": "task1", "description": "task1 description." }, {safe: true}, function(err, documents) { if (err) throw err; console.log(documents.insertedId); } ); client.close() })
运行程序,发如今控制台打印出了以下结果数据库
Connected successfully to server 5b59d53ae3d895184824586b
这个返回的5b59d53ae3d895184824586b
是MongoDB的文档标识符,它是惟一的,它的本质是二进制JSON(即BSON),BSON是MongoDB用来交换数据的主要数据格式,MongoDB服务器用它代替JSON交换数据。大多数状况下,它更节省空间,解析起来也更快。
声明的{safe: true}代表,等数据库操做完成以后,才执行回调回调函数。npm
注意:这里为了方便,没有开启受权模式,因此,在登陆url中不须要用户名和密码也能够在登陆随便进行增删改查。但在产品环境请记得务必开启受权模式。小程序
下面代码将在数据库demodb中tasks集合找到project为task1的这条文档,并删除它。segmentfault
// 删 MongoClient.connect(url, function(err, client) { assert.equal(null, err) console.log("Connected successfully to server") const db = client.db(dbName) var tasks = db.collection('tasks') tasks.deleteOne( { "project": "task1" }, function(err, result) { assert.equal(err, null); assert.equal(1, result.result.n); console.log("Removed the document"); } ); client.close() })
注意:若是tasks集合中有多条project为task1的文档,那么,也只会删除找到的第一天文档。数组
下面代码将在数据库demodb中tasks集合找到project为task1的这条文档,并更新它。服务器
// 改 MongoClient.connect(url, function(err, client) { assert.equal(null, err) console.log("Connected successfully to server") const db = client.db(dbName) var tasks = db.collection('tasks') tasks.updateOne( { "project": "task1" }, { $set: { "project" : "task999" } }, {safe: true}, function(err, result) { assert.equal(err, null); assert.equal(1, result.result.n); console.log("Updated the document"); } ); client.close() })
注意:若是在tasks集合没有找到project为task1的文档,程序将会抛出断言错误,以下:
下面代码将在数据库demodb中tasks集合找到全部文档,并打印到控制台。
// 查 MongoClient.connect(url, function(err, client) { assert.equal(null, err) console.log("Connected successfully to server") const db = client.db(dbName) var tasks = db.collection('tasks') tasks.find().toArray((err, docs) => { console.log(docs) assert.equal(null, err) // err 不等于null, 则在控制台打印err // assert.equal(3, docs.length) // 记录不等于3条, 则在控制台打印记录条数 }) client.close() })
find()方法找到全部文档,toArray()将结果转换成数组形式,运行程序,结果以下:
虽然上面四个小程序略显简单,可是不积跬步,无以致千里,若是你真的掌握了基本的增删改查,那么,掌握复杂的应用也只是时间问题了。这是mongo初阶系列的第二篇,接下来还有第三篇,借助mongoose,更优雅地操做数据。敬请期待!