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实战(第二版)

相关文章
相关标签/搜索