mongoDB初階系列三:mongoose

前言

上篇 mongoDB初階系列二:node中的增刪改查 中講解了用node驅動來對數據進行增刪改查,本篇將繼續前進,依舊經過增刪改查來說解如何用mongoose更順暢的操控MongoDB。html

什麼是Mongoose

Mongoose是一個Node模塊。提供了一種更高效的在node中操做mongoDB的方案。它提供了一個到MongoDB集合的接口,以及一些實用的功能,好比schema層次結構,中間件以及數據校驗。node

schema定義

首先,須要安裝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實戰(第二版)

相關文章
相關標籤/搜索