以下是我的代码
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}
似乎不能和updateOne
一起正常工作,将updateOne
替换为findOneAndUpdate
后就可以了。 - Kritish Bhattarai