上篇 mongoDB初階系列二:node中的增刪改查 中講解了用node驅動來對數據進行增刪改查,本篇將繼續前進,依舊經過增刪改查來說解如何用mongoose更順暢的操控MongoDB。html
Mongoose是一個Node模塊。提供了一種更高效的在node中操做mongoDB的方案。它提供了一個到MongoDB集合的接口,以及一些實用的功能,好比schema層次結構,中間件以及數據校驗。node
首先,須要安裝mongoose,安裝mongoose的命令以下:npm install mongoose
,同時,記得開啓mongoDB服務。mongodb
在Mongoose中,一切都被Schema所驅動。在下面程序中,咱們定義了一個Tasks,你能夠理解爲,這個Tasks對應在mongoDB中是一個tasks集合。該集合有兩個屬性,一個是project,類型爲string,另外一個是description,類型也是string。數據庫
var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/demodb') var db = mongoose.connection; db.on('error', function(error) { console.log(error); }); // schema定義 var Tasks = new mongoose.Schema({ project: {type : String, default : '默認任務'}, description: String }); mongoose.model('Task', Tasks);
// add var Task = mongoose.model('Task'); var task = new Task(); task.description = 'task1 description.'; task.save(function(err) { if (err) throw err; console.log('Task saved.') })
若是數據庫demodb中沒有tasks這個集合,當上面程序執行時,會自動建立tasks集合,當執行該程序後,咱們發現數據庫中tasks集合多了一行數據:
npm
若是咱們不當心把task.description的值賦予了數字123,那麼程序能正常執行嗎?
固然,mongoose會幫咱們自動將數字123轉換成字符串123。最後結果會是這樣:
segmentfault
能夠用文檔的內部ID獲取和刪除文檔,代碼以下:mongoose
// 刪除 var Task = mongoose.model('Task') Task.findById('5b56ce3c2fa17f02e459fe54', function(err, task) { task.remove() })
固然,你能夠用其餘條件來進行刪除,代碼以下:工具
var Task = mongoose.model('Task') Task.findOne({ 'description': '12' }, function(err, task) { task.remove() })
下面的代碼用Mongoose更新了一個文檔id爲5b5bebbfbf04e70bd432bde1的文檔測試
var Task = mongoose.model('Task'); Task.update( {_id: '5b5bebbfbf04e70bd432bde1'}, {description: 'update description.'}, {multi: false}, function(err, rows_updated) { if (err) throw err; console.log('Updated.'); } )
固然你也能夠用mongoose的find方法定位一個文檔,而後修改並保存它。ui
下面這段代碼對tasks集合進行搜索,並輸出每項任務的惟一ID和描述,等打印完成後,關閉數據庫鏈接。
var Task = mongoose.model('Task'); Task.find((err, tasks) => { console.log(tasks) if (tasks != null) { tasks.map(v => { console.log('ID:' + v._id); console.log(v.description); }) } db.close() });
固然,查詢方法有不少,這裏只是列舉其一。
順便提一下,可使用mongoDB官方推出的compass工具來查看和操做數據(包括增刪改查),對於測試和調試數據來講,很是的方便。
以爲本身是操控mongoDB的高手了嗎?也許還不是,但讀完本系列的初階三部曲,相信你應該已經掌握了不少基礎知識,若是你決定深刻使用Mongoose,請參考它的在線文檔 http://mongoosejs.com/docs/in...
到這裏爲止,mongoDB初階系列將告一段落,同時,推薦以下書籍供須要深刻理解mongoDB的朋友繼續參考:
MongoDB權威指南(第2版)
MongoDB實戰(第二版)