通过 id 集更新多个文档。猫鼬
Posted
技术标签:
【中文标题】通过 id 集更新多个文档。猫鼬【英文标题】:Update multiple documents by id set. Mongoose 【发布时间】:2013-12-04 12:02:01 【问题描述】:我想知道 mongoose 是否有一些方法可以通过 id 集更新多个文档。例如:
for (var i = 0, l = ids.length; i < l; i++)
Element.update('_id': ids[i], 'visibility': visibility ,function(err, records)
if (err)
return false;
else
return true;
;
);
;
我想知道的是,如果猫鼬可以做这样的事情:
Element.update('_id': ids, 'visibility': visibility, multi: true ,function(err, records)
if (err)
return false;
);
其中 ids 是一个 id 数组,例如 ['id1', 'id2', 'id3'] - 样本数组。 查找同样的问题。
【问题讨论】:
【参考方案1】:很可能是的。在mongodb查询中使用$in操作符调用更新。
db.Element.update(
_id: $in: ['id1', 'id2', 'id3'] ,
$set: visibility : yourvisibility ,
multi: true
)
你只需要找到如何在 mongoose 中实现 $in。
【讨论】:
是的,你是对的,$in 运算符也非常适合猫鼬。 我可以使用多重更新但使用保存命令吗?因为通过保存我也有验证 是否可以为不同的 _id 值更新可见性属性? 使用 multi: true 查询,您将能够为不同的 _id 值更新可见性属性@Vinay 这对我有用,使用猫鼬。 ``` Product.update(store: $in: [storeId], $set: disabled: true).then(ret => console.log(ret); ); ```【参考方案2】:在 updateMany 函数中不需要 multi: true
db.collectionName.updateMany(
_id:
$in:
[
ObjectId("your object id"),
ObjectId("your object id")
]
,
$inc: quantity: 100
)
我想再补充一点,你可以使用$in来获取多个文档
db.collectionName.find(
_id:
$in:
[
ObjectId("your object id"),
ObjectId("your object id")
]
)
【讨论】:
【参考方案3】:更新与集合的指定过滤器匹配的所有文档。
let ids = ["kwwe232244h3j44jg3h4", "23h2u32g2h3b3hbh", "fhfu3h4h34u35"];
let visibility = true;
Element.updateMany(_id: $in: ids,
$set: visibility ,
multi: true ,
function(err, records)
if (err)
return false;
);
know more
【讨论】:
以上是关于通过 id 集更新多个文档。猫鼬的主要内容,如果未能解决你的问题,请参考以下文章