mongoose增删改查基础操作指南

增——向数据库中存储数据

1.存储单条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var Project = require('./../models/projects') // 数据模型
var proObj = req.body.info // post进来的数据对象
var project = new Project(proObj)
project.save(function(err, doc) {
if (err) {
res.json({
code: 1,
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: 'suc'
})
}
})

2.存储多条数据,即多个document

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var Questions = require('./../models/questionsbases') // 数据模型
var quesObj = req.body.questions // post参数,quesObj是一个包含多个文档对象的数组
Questions.collection.insert(quesObj, function(err, doc) {
if (err) {
res.json({
code: 1,
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: 'suc'
})
}
})

删——根据指定条件删除数据

1.最简单的方法 Models.remove({id: req.body.id}, fn)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var Project = require('./../models/projects') // 数据模型
var pID = req.body.pID
Project.remove({
pID: pID
}, function(err) {
if (err) {
res.json({
code: 1,
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: 'suc'
})
}
})

2.根据_id删除数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var Questions = require('./../models/questionsbases') // 数据模型
var _id = req.body._id
Questions.findByIdAndRemove(_id, function(err) {
if (err) {
res.json({
code: 1,
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: 'suc'
})
}
})

改——修改文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const Questions = require('./../models/questionsbases') // 数据模型
const qInfo = req.body.qInfo // post参数
const _id = qInfo._id // 条件
const qType = qInfo.type // 要修改的字段
const qQuestion = qInfo.question // 要修改的字段
Questions.update({
'_id': _id
}, {
$set: { qType: qType, qQuestion: qQuestion }
}, function(err) {
if (err) {
res.json({
code: 1,
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: 'suc'
})
}
})

查——查询文档

1.get普通查询,查询全部数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var User = require('./../models/users')
User.find({}, (err, doc) => {
if (err) {
res.json({
status: '1',
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: {
count: doc.length,
items: doc
}
})
}
})

2.分页查询,返回数据和数据总数

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
const Project = require('./../models/projects') // 数据模型
const pageData = req.body.pageData // post参数
const pageSize = parseInt(pageData.pageSize)
const page = parseInt(pageData.currentPage)
const skip = (page - 1) * pageSize
const projects = Project.find({}).skip(skip).limit(pageSize)

let pcount = 0
const count = Project.count({})
count.exec((err, data) => {
if (err) {
return
} else {
pcount = data
}
})

projects.exec((err, doc) => {
if (err) {
res.json({
status: '1',
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: {
count: pcount,
items: doc
}
})
}
})

3.聚合查询,查询qCategory字段的集合结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const Questions = require('./../models/questionsbases') // 数据模型
Questions.find({}).distinct('qCategory').exec((err, category) => {
if (err) {
res.json({
code: 1,
msg: err.message
})
} else {
res.json({
code: 20000,
msg: '',
data: category
})
}
})