首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mongoose: findOneAndUpdate不返回更新的文档

Mongoose: findOneAndUpdate不返回更新的文档
EN

Stack Overflow用户
提问于 2015-09-28 02:41:35
回答 10查看 354.9K关注 0票数 358

下面是我的代码

代码语言:javascript
复制
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它的时候仍然得到了原始数据。

EN

回答 10

Stack Overflow用户

发布于 2017-04-18 21:52:27

对于任何使用Node.js驱动程序而不是Mongoose的人,您将希望使用{returnOriginal:false}而不是{new:true}

票数 117
EN

Stack Overflow用户

发布于 2017-12-21 14:06:08

因此,"findOneAndUpdate“需要一个返回原始文档的选项。并且,选项是:

MongoDB外壳

{returnNewDocument: true}

参考:https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/

猫头鹰

{new: true}

参考:http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate

Node.js MongoDB驱动程序接口:

{returnOriginal: false}

参考:http://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html#findOneAndUpdate

票数 77
EN

Stack Overflow用户

发布于 2015-09-28 02:47:46

默认情况下,findOneAndUpdate返回原始文档。如果希望它返回修改后的文档,请将options对象{ new: true }传递给函数:

代码语言:javascript
复制
Cat.findOneAndUpdate({ age: 17 }, { $set: { name: "Naomi" } }, { new: true }, function(err, doc) {

});
票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32811510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档