资讯专栏INFORMATION COLUMN

mongoDB初阶系列三:mongoose

yzzz / 2341人阅读

摘要:前言上篇初阶系列二中的增删改查中讲解了用驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用更顺畅的操控。查下面这段代码对集合进行搜索,并输出每项任务的唯一和描述,等打印完成后,关闭数据库连接。

前言

上篇 mongoDB初阶系列二:node中的增删改查 中讲解了用node驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用mongoose更顺畅的操控MongoDB。

什么是Mongoose

Mongoose是一个Node模块。提供了一种更高效的在node中操作mongoDB的方案。它提供了一个到MongoDB集合的接口,以及一些实用的功能,比如schema层次结构,中间件以及数据校验。

schema定义

首先,需要安装mongoose,安装mongoose的命令如下:npm install mongoose,同时,记得开启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集合多了一行数据:

如果我们不小心把task.description的值赋予了数字123,那么程序能正常执行吗?
当然,mongoose会帮我们自动将数字123转换成字符串123。最后结果会是这样:

可以用文档的内部ID获取和删除文档,代码如下:

// 删除
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方法定位一个文档,然后修改并保存它。

下面这段代码对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实战(第二版)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96357.html

相关文章

  • mongoDB初阶系列mongoose

    摘要:前言上篇初阶系列二中的增删改查中讲解了用驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用更顺畅的操控。查下面这段代码对集合进行搜索,并输出每项任务的唯一和描述,等打印完成后,关闭数据库连接。 前言 上篇 mongoDB初阶系列二:node中的增删改查 中讲解了用node驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用mongoose更顺畅的操...

    Null 评论0 收藏0
  • mongoDB初阶系列二:node中的增删改查

    摘要:前言上一篇中初阶系列一用户和权限介绍了用户和权限,这一篇将介绍如何在中进行增删改查。这是初阶系列的第二篇,接下来还有第三篇,借助,更优雅地操作数据。 前言 上一篇中(mongoDB初阶系列一:用户和权限)介绍了用户和权限,这一篇将介绍如何在node中进行增删改查。 准备 首先,要在node中使用mongoDB,需要安装MongoDB Driver,命令如下:npm install mo...

    Barrior 评论0 收藏0
  • mongoDB初阶系列二:node中的增删改查

    摘要:前言上一篇中初阶系列一用户和权限介绍了用户和权限,这一篇将介绍如何在中进行增删改查。这是初阶系列的第二篇,接下来还有第三篇,借助,更优雅地操作数据。 前言 上一篇中(mongoDB初阶系列一:用户和权限)介绍了用户和权限,这一篇将介绍如何在node中进行增删改查。 准备 首先,要在node中使用mongoDB,需要安装MongoDB Driver,命令如下:npm install mo...

    kevin 评论0 收藏0
  • mongoDB初阶系列一:用户和权限

    摘要:本文将重点介绍的用户和权限这一部分。结果返回,表示管理员登录成功。接下来,用这个管理员给数据库创建一个普通用户,并指定其权限为。 前言 对于数据库而言,用户和权限是非常重要的一部分,因为这涉及到安全,那么mongoDB的用户和权限是怎么样的呢? 说明 环境说明 本文所用的mongoDB版本是3.6,操作系统是windows。 其他说明 限于篇幅,本文不会介绍数据库从下载到安装的过程,关...

    CastlePeaK 评论0 收藏0
  • Express+MongoDB步步为'赢'

    摘要:全局安装脚手架创建项目与是一个对象数据库,是用来存储数据的存储的数据格式为。三封装数据库的在文件下新建采用封装对数据库的操作,避免回调地狱,使得代码能够更好的被读懂和维护。 前奏 Express 是什么? Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。 全局安装express脚手架 ...

    张春雷 评论0 收藏0

发表评论

0条评论

yzzz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<