javascript - 更新猫鼬中的许多嵌套对象
问题描述
有没有办法一次更新猫鼬中的许多嵌套对象?我可以像这样更新一个嵌套对象:
Model.findOneAndUpdate(
{name : watchlistName , "mentions.id" : 123},
{
$set : {
"mentions.$.tone" : positive,
"mentions.$.verified" : true
}
}, function (err) {
if(err) {
console.log(err);
}
}
);
但是如果我说要更新 200 个 id,我应该如何进行?
解决方案
您可以为此使用模型的更新方法。
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
推荐阅读
- python - Keras/tensorflow:对张量中的特定维度求和
- c# - DllImport 从 cpp 到 csharp;构建但在运行时卡在 cpp 函数中
- python - 按组填充数据框中的所有变量
- amazon-web-services - 为什么 EC2 /etc/resolv.conf 总是为空,重启实例可以填充这些值,但稍后它会再次为空
- ruby-on-rails - Rails 资产未在 Docker 上加载
- drupal - Drupal 7: Applying an Image Style to a Picture
- orbeon - 初始化 opsXFormsProperties 中的 Orbeon 2018.1 错误
- java - JNLP 应用程序 - Lib 文件夹未发送到客户端
- firebase - 有一些方法可以查看用户在 Firebase FCM 上订阅了哪些主题?
- autocad - 无法在 Oz 维度上绘图(尝试过 OSNAP)