下面是我的代码
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Cat = mongoose.model('Cat', {
name: String,
age: {type: Number, default: 20},
create: {type: Date, default: Date.now}
});
Cat.findOneAndUpdate({age: 17}, {$set:{name:"Naomi"}},function(err, doc){
if(err){
console.log("Something wrong when updating data!");
}
console.log(doc);
});
我的mongo数据库中已经有一些记录,我想运行此代码来更新年龄为17岁的姓名,然后在代码末尾打印结果。
但是,为什么我仍然从控制台获得相同的结果(而不是修改后的名称),但是当我转到mongo db命令行并键入“ db.cats.find();
”时。结果带有修改后的名称。
然后,我再次运行该代码,并修改了结果。
我的问题是:如果修改了数据,那么为什么当console.log记录时我还是第一次得到原始数据。
猫鼬维护者在这里。您需要将
new
选项设置为true
(或等效地,设置returnOriginal
为false
)请参阅Mongoose
findOneAndUpdate()
文档和有关在Mongoose中更新文档的本教程。