Mongoose更新前五个文件

时间:2015-08-02 09:49:54

标签: node.js mongodb mongoose mongodb-query

您好我正在尝试使用mongoose从我的架构中仅更新前五个文档。我找到了一种通过给出条件来更新文档的方法,但是只能在前五次更新。

我收到了这段代码

mongoose.model('person').update( {active:false} , {multi: true} , function(err,docs) { ... });

谢谢

1 个答案:

答案 0 :(得分:1)

此处的关键是获取符合条件的前5个_id值,然后将使用$in的值传递给您的更新选择:

mongoose.model('person').find({ "active": { "$ne": false }}).limit(5)
    .exec(function(err,docs) {
    var ids = docs.map(function(doc) { return doc._id } );
    mongoose.model('person').update(
       { "_id": { "$in": ids } },
       { "$set": { "active": false } },
       { "multi": true },
       function(err,numAffected) {

       }
    );
});

还要注意带有“query”和“update”块的update语句的正确参数。您还应该使用更新运算符,例如$set,否则您只使用“更新”块的内容覆盖现有文档内容。

另请参阅核心文档中的.update()方法。