【问题标题】: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() 方法。