# 一.基础
定义:是 node 中提供操作 MongoDB 的模块;能够通过 node 语法实现 MongoDB 数据库增删改查,从而实现用 node 写程序来管理 MongoDB 数据库。
下载:
npm i mongoose或yarn add mongoosemodel:一个模型对应一个集合。
# 二.使用
//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
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)