您好我正在尝试使用mongoose从我的架构中仅更新前五个文档。我找到了一种通过给出条件来更新文档的方法,但是只能在前五次更新。
我收到了这段代码
mongoose.model('person').update( {active:false} , {multi: true} , function(err,docs) { ... });
谢谢
答案 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()
方法。