上一篇中(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,更優雅地操做數據。敬請期待!