正文
Mongoose中的Document对象和MongoDB数据库集合中的文档一一对应,上一章我们得知,Document是Model的实例,通过Model查询的结果都是Document.
所以我们是可以凭空创建一个Document,而不是再使用Model的方法来增删改查文档。
首先准备前面依赖的部分。
const mongoose = require('mongoose')
const Schema = mongoose.Schema
mongoose.connect('mongodb://127.0.0.1:27017/mytest', {useNewUrlParser: true, useUnifiedTopology: true})
mongoose.connection.once("open", () => {
console.log(`数据库已连接成功,Server is running at:http://127.0.0.1:27017`)
})
//创建一个Schema对象
const stuSchema = new Schema({
name: String,
age: Number,
gender: {
type: String,
default: "female"
},
address: String
});
//创建一个Model对象
const stuModel = mongoose.model('students', stuSchema);
创建一个Document,创建完成后,并不会立即生效插入到数据库当中。
const stu = new stuModel({
name: "小雪",
age: 21,
gender: "female",
address: "日月湾"
})
console.log(stu)
想要上面的代码生效,插入到数据库当中,需要额外执行Document的save()方法。
Model#save([options], [fn])
stu.save(err => {
if (!err) {//如果没有报错
console.log('保存成功!')
}
})
用Node执行代码
打开数据库的可视化工具,查看,发现数据保存成功。
Document对象其余常见方法(有些已经被废弃掉,自己斟酌使用)。
updateOne(update, [options], [callback])
比如我们想修改小红的年龄。
代码如下:
stuModel.findOne({name: "小红"}, (err, doc) => {
if (!err) {
doc.updateOne({$set: {age: 28}}, err => {
if (!err) {
console.log('修改成功')
}
})
}
})
执行代码:
查看数据库。
还有一种更加直接的改法。
stuModel.findOne({name: "小红"}, (err, doc) => {
if (!err) {
doc.age = 18
doc.save()
console.log('数据保存成功!')
}
})
实现的效果是一样的。
deleteOne( [callback])方法
我们删除小红的数据。