需求分析

mongoose是什么?

  1. Mongoose就是一款在Node.js环境下对MongoDB API 进行便捷操作的对象模型工具。Mongoose的操作是以对象为单位的。
  2. 最新的Mongoose升级后(差不多)全面支持Promise,可以很方便的对接async/await语法
  3. 官方文档:http://mongoosejs.com/
  4. 中文文档:http://mongoosejs.net/

为什么要用?

  1. 之前我们都是通过命令行或者shell来完成对数据库的各种操作的,但在开发中大部分时候我们都需要通过程序来完成对数据库的操作。
  2. 而Mongoose就是一个让我们可以通过Node来操作MongoDB的模块。

mongoose的优势?

  • 可以为文档创建一个模式结构(Schema)
  • 可以对模型中的对象/文档进行验证
  • 数据可以通过类型转换转换为对象模型
  • 可以使用中间件来应用业务逻辑挂钩
  • 比Node原生的MongoDB驱动更容易

mongoose的基本使用

相关概念

mongoose中提供了几个新的对象

  1. Schema(模式对象):Schema对象定义约束了数据库中的文档结构
  2. Model:Model对象作为集合中的所有文档的表示,相当于MongoDB数据库中的集合collection
  3. Document:Document表示集合中的具体文档

使用步骤:连接 ——> 定义模式 ——> 生成Model ——> 生成Model实例

  1. 下载安装Mongoose
    npm i mongoose --save

  2. 在项目中引入mongoose
    let mongoose = require("mongoose");

  3. 连接MongoDB数据库
    mongoose.connect('mongodb://数据库的ip地址:端口号/数据库名');
    如果端口号是默认端口号(27017) 则可以省略不写

  4. 监听MongoDB数据库的连接状态
    在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接, 通过监视该对象的状态,可以来监听数据库的连接与断开
    mongoose.connection.once("open",function(){}); mongoose.connection.once("close",function(){});

  5. 案例实操

    // 1. 在项目中引入mongoose
    let mongoose = require('mongoose');
    // 2. 连接MongoDB数据库
    mongoose.connect('mongodb://localhost/node_mongoose');
    // 3. 监听MongoDB数据库的各种状态
    let db = mongoose.connection;
    // 连接失败
    db.on('error', ()=>{
        console.log("连接失败");
    });
    // 连接成功
    db.once('open', () => {
        console.log("连接成功");
    });
    // 监听数据库断开连接
    db.once('close', () => {
        console.log("数据库断开连接");
    });
    mongoose.disconnect();
    
  6. 步骤详解
    1)下载安装Mongoose
    2)在项目中引入mongoose
    3)连接MongoDB数据库
    4)监听MongoDB数据库的连接状态

mongoose对文档进行增删改查

增:create、insertMany

SQL:Mongoose在node中的应用_mongodb
SQL:Mongoose在node中的应用_mongodb数据库_02

查:find、findById、findOne

Model.find()
Model.findById()
Model.findOne()
图示
SQL:Mongoose在node中的应用_数据库_03
SQL:Mongoose在node中的应用_mongodb_04
SQL:Mongoose在node中的应用_下载安装_05
SQL:Mongoose在node中的应用_数据库_06
SQL:Mongoose在node中的应用_下载安装_07
SQL:Mongoose在node中的应用_端口号_08
SQL:Mongoose在node中的应用_下载安装_09
需要展示为1,不需要展示不写,id需要特殊操作。
SQL:Mongoose在node中的应用_mongodb_10
需要什么就在引号内加什么,id需要特殊操作。
SQL:Mongoose在node中的应用_mongodb数据库_11
SQL:Mongoose在node中的应用_mongodb数据库_12

SQL:Mongoose在node中的应用_下载安装_13
SQL:Mongoose在node中的应用_mongodb_14
SQL:Mongoose在node中的应用_mongodb_15

SQL:Mongoose在node中的应用_下载安装_16
SQL:Mongoose在node中的应用_数据库_17
SQL:Mongoose在node中的应用_数据库_18
SQL:Mongoose在node中的应用_下载安装_19

统计个数

SQL:Mongoose在node中的应用_端口号_20
SQL:Mongoose在node中的应用_数据库_21

mongoose中的文档方法

get(name):获取文档中的指定属性值

SQL:Mongoose在node中的应用_下载安装_22

set(name , value):设置文档的指定的属性值

SQL:Mongoose在node中的应用_mongodb_23

toJSON():转换为一个JSON对象

SQL:Mongoose在node中的应用_端口号_24

toObject():将Document对象转换为一个普通的JS对象

转换为普通的js对象以后,注意所有的Document对象的方法或属性都不能使用了