下面是我的代码
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的name,然后在代码末尾打印结果。
然而,为什么我仍然从控制台得到相同的结果(而不是修改后的名称),但是当我进入mongo db命令行并输入"db.cats.find();
“时。结果是修改了名称。
然后我再次运行这段代码,结果被修改了。
我的问题是:如果数据被修改了,那么为什么我在第一次console.log它的时候仍然得到了原始数据。
发布于 2019-10-10 00:11:52
我是Mongoose维护者。您需要将new
选项设置为true
(或等效地,将returnOriginal
设置为false
)
await User.findOneAndUpdate(filter, update, { new: true });
// Equivalent
await User.findOneAndUpdate(filter, update, { returnOriginal: false });
参见Mongoose findOneAndUpdate()
docs和this tutorial on updating documents in Mongoose。
https://stackoverflow.com/questions/32811510
复制相似问题