【问题标题】:Mongoose update first five documentsMongoose 更新前五个文件
【发布时间】:2015-10-24 13:51:27
【问题描述】:

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

我得到了这个代码

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

谢谢

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案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) {
    
           }
        );
    });
    

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-19
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多