MongoDB 更新数组数组中的文档字段

Posted

技术标签:

【中文标题】MongoDB 更新数组数组中的文档字段【英文标题】:MongoDB update a document field in Array of Arrays 【发布时间】:2021-07-20 05:51:13 【问题描述】:

如何在文档中更新($set)匹配“callback_data”:“like”的字段“text”,如下所示:

"data": 
    "buttons": [
        [
            "text": "Button",
            "url": "https://example.org"
        ],
        [
            "text": "????",
            "callback_data": "like"
        , 
            "text": "????",
            "callback_data": "dislike"
        ]
    ]

【问题讨论】:

【参考方案1】:

演示 - https://mongoplayground.net/p/_g9YmDY5WMn

使用 - update-documents-with-aggregation-pipeline

$map$mergeObjects$cond

db.collection.update(,
[
  
    $set: 
      "data.buttons": 
        $map: 
          input: "$data.buttons",
          in: 
            $map: 
              input: "$$this", // array inside buttons 
              in: 
                $cond: [
                   $eq: [ "$$this.callback_data", "like" ] , // condition
                   $mergeObjects: [ "$$this",  text: "changed"  ] , // true
                  "$$this" // false
                ]
              
            
          
        
      
    
  
],

  multi: true
)

【讨论】:

以上是关于MongoDB 更新数组数组中的文档字段的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Data MongodB 更新嵌入式 mongodb 文档中的数组字段?

为集合中的所有文档更新数组中的一个或两个字段 - mongodb

Mongoose 不更新 mongodb 中的数组

在 mongo 和 upsert 中更新数组

如何根据另一个字段更新 mongodb 中的数组 dict 元素

如何使用 java 驱动程序更新 mongo db 中的文档字段?