# 一.基础

  1. 定义:是 node 中提供操作 MongoDB 的模块;能够通过 node 语法实现 MongoDB 数据库增删改查,从而实现用 node 写程序来管理 MongoDB 数据库。

  2. 下载:npm i mongooseyarn add mongoose

  3. schame:mongoose 中文文档 (opens new window)

  4. model:一个模型对应一个集合。

# 二.使用

//1.导入模块
const mongoose = require("mongoose");
// 2.链接数据库
const conn = mongoose.createConnection(
  "mongodb://账号:密码@localhost:数据库端口号/数据库",
  { userNewUrlParser: true, useUnifiedTopology: true },
  (err) => {
    if (err) {
      console.log("-----------------------");
      console.log("数据库链接失败", err);
      console.log("-----------------------");
      return;
    }
    console.log("数据库链接失败", err);
  }
);
// 3.设置数据模型(声明是哪个集合,限制字段个数和字段类型)
const model = db.model("stu", {
  uname: { type: String, default: "testname" },
  age: { type: Number },
  sex: { type: String },
});
//4.创建实例操作,与设置数据模型对应,可在这里设置初始值
const insertObj = new Model({
  userName: "张三",
  pwd: "admin",
  age: 12,
  sex: "男",
});
// 增
// 方法1:
// insertObj.save((err)=>db.close())
// 方法2:(推荐)
insertObj
  .save()
  .then((res) => {
    return res;
  })
  .catch((err) => {
    console.log("插入失败" + err);
    return false;
  });
// 删
//方法1:remove,deleteOne,deleteMany中选一个
model.remove / deleteOne / deleteMany(条件对象, (err) => db.close());
//方法2(推荐):
model
  .deleteOne(条件对象)
  .then((res) => {
    return res.deletedCount;
  })
  .catch((err) => {
    console.log("删除失败" + err);
    return false;
  });
// 改
//方法1:
model.update / updateOne / updateMany(条件对象, 数据对象, (err) => db.close());
//方法2(推荐):
model
  .updateOne(条件对象)
  .then((res) => {
    return res.nModified;
  })
  .catch((err) => {
    console.log("修改失败" + err);
    return false;
  });
// 查
//方法1:
// model.find/findOne/updateMany(条件对象,要显示的数据对象,(err,result)=>db.close())
//方法2(推荐):条件对象{},全部查询;findOne查一条,find查多条
model
  .findOne({})
  .then((res) => {
    return res.nModified;
  })
  .catch((err) => {
    console.log("查询失败" + err);
    return false;
  });
// 分页查询
model
  .findOne({})
  .skip(1)
  .limit(1)
  .then((res) => {
    return res.nModified;
  })
  .catch((err) => {
    console.log("查询失败" + err);
    return false;
  });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

# 详细代码

参考:https://github.com/Carloin/expressdemo (opens new window)