首页 > 解决方案 > 更新MongoDB中多个文档中的多个嵌入文档

问题描述

我正在尝试使用 nodejs 中的 mongoose 更新 MongoDB 中多个文档中的多个嵌入文档。

该文档的示例如下所示。

如您所见,在“exampleDocument 中有一个嵌入式文档:“embededDoc”

let exampleDocument =  
    {   
        _id: '1aa',
        player_id: '9pp',
        docUpdated: false',
        embededDoc:
        [ 
            { 
            _id: '3eb',
            embededDocUpdated: false,
            timeDocWasSaved: '2019-04-30T08:45:50.349Z' 
            } 
        ],
    }

如何在多个“exampleDocument”文档中更新多个嵌入的“embededDoc 文档。

在这个答案的帮助下,我知道如何使用单个命令更新多个文档,如下所示:

db.exampleDocument.update(
   { _id: { $in: ['1aa', '2bb', '3cc'] } },
   { $set: { docUpdated : yes } }
)

如果我想通过它们的 id 更新几个嵌入文档(embededDoc)怎么办?

例如,假设我们有三个 ' exampleDocument ' 文档,其 id 为:'1aa'、'2bb'、'3cc'。这些文档中的每一个都有五个嵌入文档,我想通过它们的 id 更新一些嵌入文档......是否可以使用一个命令来完成,或者我必须逐个文档来完成它?

如果可能的话,我真的很感激带有答案的代码示例,谢谢。

标签: node.jsmongodbmongoose

解决方案


试试这个

db.collection.update(
{ "embededDoc._id": "3eb" },
{ $set: { "embededDoc.$.embededDocUpdated" :true  } }
)

推荐阅读