【发布时间】:2018-01-15 18:09:48
【问题描述】:
下面是我的代码
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及其工作