# 增删改查案例
前言
使用 node.js+mongodb 实现基本的增删改查需求
# 1.mongodb
- 安装依赖
cnpm i mongoose -S
1
- 配置 mongodb
const mongoose = require("mongoose");
const conn = mongoose.createConnection(
"mongodb://zhoubichuan.com:27017/school",
{
authSource: "admin",
user: "root",
pass: "xxxx",
useNewUrlParser: true,
useUnifiedTopology: true,
}
);
conn.on("error", (err) => {
console.log("连接失败");
});
conn.on("open", () => {
console.log("数据库连接成功");
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 使用桌面版 docker 启动 mongodb
# 2.后端服务
let UserSchema = new mongoose.Schema({ name: String, age: Number }); // Schama规定了集合的文档属性名和属性类型
let User = conn.model("User", UserSchema); // 基于Schema创建模型
1
2
2
- 添加时间
const schema = Schema(
{
createdAt: Number,
updatedAt: Number,
name: String,
},
{
timestamps: { currentTime: () => Math.floor(Date.now() / 1000) },
}
);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 2.1 创建字段
- 方式一
let create = (err, doc) => {
//err错误对象, doc是保存后的文档对象
console.log(doc);
};
User.create({ name: "zbc", age: 1, home: "beijing" }, create);
1
2
3
4
5
2
3
4
5
- 方式二
let user = new User({ name: "zbc", age: 4 });
user.save((err, doc) => {
console.log(doc);
doc.age = 44;
doc.save();
});
1
2
3
4
5
6
2
3
4
5
6
# 2.2 错误报告
let user2 = new User({ name: 4, age: "w" });
user2.save((err, doc) => {
console.log(err);
});
1
2
3
4
2
3
4
# 2.3 更新字段
// User这个模型有多种方法,可以操作数据库
User.updateMany(
{ name: "zbc" },
{
$set: { // 被更新的字段: 更新后的值
}
}, (err, doc) => {
//err错误对象, doc是保存后的文档对象
console.log(doc);
}
)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 2.4 删除字段
// User这个模型有多种方法,可以操作数据库
User.deleteMany({ name: "zbc" }, (err, doc) => {
console.log(err);
console.log(doc);
});
1
2
3
4
5
2
3
4
5
# 2.5 查询字段
let users = [];
for (let i = 1; i < 10; i++) {
users.push({ id: i, age: i, name: `zbc${i}` });
}
(async function () {
let doc = await User.create(users);
console.log(doc);
})();
User.find({}, { name: 0 }, (err, docs) => {
console.log(err);
console.log(docs);
});
User.findOne({}, { name: 0 }, (err, docs) => {
console.log(err);
console.log(docs);
});
User.findById("5c287a90828986304ca1bf79", (err, docs) => {
console.log(err);
console.log(docs);
});
User.find({ age: { $get: 3, $lt: 6 } }, (err, docs) => {
console.log(err);
console.log(docs);
});
//判断某个字段是否存在
User.find({ age: { $exist: true } }, (err, docs) => {
console.log(err);
console.log(docs);
});
let pageNum = 2;
let pageSize = 3;
User.find({})
.sort({ age: 1 })
.skip((pageNum - 1) * pageSize)
.limit(pageSize)
.exec((err, docs) => {
console.log(docs);
});
//总条数
User.count((err, total) => {
console.log(total);
});
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
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
- 封装函数
class User {
constructor() {
let users = [];
for(let i=0;){
users.push({id:i,age:i,})
}
}
skip(skip) {
this.skip = skip;
return this
}
limit(limit) {
this.limit = limit;
return this
}
sort(sort) {
this.sort = sort;
return this
}
exec(){
this.users.sort((a,b)=>{
return a.age - b.age
})
}
}
let user=new User()
let result=user.skip().limit().sort().exec()
console.log(result)
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
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
安装 →