我有以下记录:
id: 119,
customfields: Array (2)
0: Object
value: "Mr"
type: "salutation"
1: Object
value: "Google"
type: "company"
字符串
我需要更新此文档,以便获得:
id: 119,
salutation: "Mr",
company: "Google"
型
重要的是:
- 参数的位置可以变化,即,一些记录首先有
salutation
,其他记录有company
,其他记录可能有其他无关紧要的字段。 - 有些文档在
customfields
数组中没有salutation
记录,因此应该忽略。公司的逻辑相同。
2条答案
按热度按时间e5nqia271#
$map
customfields
先到一个k-v元组数组。然后,$mergeObjects
用$$ROOT
对象得到最终对象。$unset
现在没用的自定义字段和$merge
用id
更新回文档。字符串
Mongo Playground
vmjh9lq92#
下面是另一种使用
"$reduce"
重建文档的方法。字符串
在mongoplayground.net上试试。