本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
参考文献
起步
-
安装
npm i mongoose -
简单示例
const mongoose = require('mongoose') mongoose.connect('mongodb://localhost/test', { useMongoClient: true }) mongoose.Promise = global.Promise // 创建一个模型(就是在设计数据库) // MongoDB 是动态的,非常灵活,只需要在代码中设计数据库就可以了 // mongoose 这个包就可以让设计编写过程变的非常的简单 let Cat = mongoose.model('Cat', { name: String }) // 实例化一个 Cat let kitty = new Cat({ name: 'Zildjian' }) // 持久化保存 kitty 实例 kitty.save(err => { if (err) { console.log(err) } else { console.log('meov') } })
官方指南
设计 Scheme 发布 model
const mongoose = require('mongoose')
const Schema = mongoose.Schema
mongoose.connect('mongodb://localhost/test')
// 设计文档结构
let userSchema = new Schema({
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
email: {
type: String
}
})
// 将文档结构发布为模型
// mongoose.model 方法就是用来将一个架构发布为 model
// 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称,mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称(User → users)
// 返回值:模型构造函数
let User = mongoose.model('User', userSchema)
增加数据
const mongoose = require('mongoose')
const Schema = mongoose.Schema
mongoose.connect('mongodb://localhost/test')
let userSchema = new Schema({
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
email: {
type: String
}
})
let User = mongoose.model('User', userSchema)
// 增加数据
let admin = new User({
username: 'admin',
password: '123456',
email: 'admin@admin.com'
})
admin.save(err => {
if (err) {
console.log('储存失败')
} else {
console.log('储存成功')
}
})
查询数据
// 查询所有数据
User.find({
username: '张三'
}, (err, data) => {
if (err) {
console.log('查询失败')
} else {
console.log(data)
}
})
// 按照条件查询所有符合条件的数据
User.find({
username: '张三'
}, (err, data) => {
if (err) {
console.log('查询失败')
} else {
console.log(data)
}
})
// 只查找符合条件的第一个,返回一个对象形式
User.findOne({
username: '张三'
}, (err, data) => {
if (err) {
console.log('查询失败')
} else {
console.log(data)
}
})
// 或条件查询
User.findOne({
$or: [
{
email: body.email
},
{
nickname: body.nickname
}
]
}, (err, data) => {
if (err) {
return res.status(500).send('Server Error')
}
})
删除数据
// 按照条件删除对应的数据
User.remove({
username: '张三'
}, (err, data) => {
if (err) {
console.log('查询失败')
} else {
console.log(data)
}
})
// 根据条件删除一条数据
User.findOneAndRemove({
username: '张三'
}, (err, data) => {
if (err) {
console.log('查询失败')
} else {
console.log(data)
}
})
// 根据 id 删除一条数据
User.findByIdAndRemove(id, [option], [callback])
更新数据
// 根据条件更新所有数据
User.findByIdAndUpdate('id', (err, data) => {
if (err) {
console.log('更新失败')
} else {
console.log(data)
}
})
// 根据指定条件更新一个
User.findOneAndupdate([conditions], [update], [options], [callback])
// 根据 id 更新一个
User.findByIdAndUpdate(id, {
password: '123'
}, (err, ret) => {
if (err) {
console.log('更新失败')
} else {
console.log('更新成功')
}
})