有没有一种方法可以一次更新猫鼬中的许多嵌套对象?我可以像这样更新一个嵌套对象:
Model.findOneAndUpdate(
{name : watchlistName , "mentions.id" : 123},
{
$set : {
"mentions.$.tone" : positive,
"mentions.$.verified" : true
}
}, function (err) {
if(err) {
console.log(err);
}
}
);
但是如果我说要更新200个id,我应该如何进行?
答案 0 :(得分:0)
您可以为此使用模型的update方法。
Model.update(
{name : watchlistName , "mentions.id": { $in: [1, 2, 3, 4, 5] }},
{
$set : {
"mentions.$.tone" : positive,
"mentions.$.verified" : true
}
}, function (err) {
if(err) {
console.log(err);
}
}
);
如果您需要使用不同的值来更新它们,建议您这样做:
const docs = await Model.find({name : watchlistName , "mentions.id": { $in: [1, 2, 3, 4, 5] }}).exec();
docs.forEach((doc) => {
doc.mentions.$.tone = '[docValue]';
});
await Promise.all(docs.map(async doc => await doc.save()));
// All docs are updated now