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