簡體   English   中英

mongodb:為每個文檔的數組屬性的每個 object 添加新屬性

[英]mongodb : add new property to each object of an array property of every document

我在 mongo 中有以下集合:

     // document 1
    {  
      elements:[
        {
          prop1:true,
          prop2:false,
        },
        {
          prop1:true,
          prop2:false,
        }
      ]
    },
     // document 2
    {
      
      elements:[
        {
          prop1:true,
          prop2:false,
        },
        {
          prop1:true,
          prop2:false,
        }
      ]
    }

我想通過以下方式更新每個文檔的元素集合的每個元素:

我想添加property3:true來獲得:

     // document 1
    {  
      elements:[
        {
          prop1:true,
          prop2:false,
          prop3:true -> added property
        },
        {
          prop1:true,
          prop2:false,
          prop3:true -> added property
        }
      ]
    },
     // document 2
    {
      
      elements:[
        {
          prop1:true,
          prop2:false,
          prop3:true -> added property
        },
        {
          prop1:true,
          prop2:false,
          prop3:true -> added property
        }
      ]
    }

我嘗試使用位置運算符,但它只更新了每個文檔的元素集合的第一個元素:

    await db.collection('MyCollection').updateMany(
      {
        elements: { $exists: true },
      },
      {
        $set: {
          'elements.$.property3': true,
        },
      }
    )

我嘗試使用匹配,但它沒有更新任何內容:

    await db.collection('MyCollection').updateMany(
      {
        elements: {
          $elemMatch: {
            prop1: {$exists:true},
          },
        },
      },
      {
        $set: {
          'prop3': false,
        },
      }
    )

在此先感謝您的幫助

elements.$[].property3使用$[]所有位置運算符。

db.collection.updateMany({
  elements: {
    $exists: true
  },
  
},
{
  $set: {
    "elements.$[].property3": true
  },
  
})

演示@Mongo Playground

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM