我想使用聚合框架获得 MongoDB 3.4 中对象中所有数组的并集:
这是输入:
{
_id: "001",
name: "something",
important_part: {
foo: [1,2,3],
bar: [4,5],
x: [6,7]
}
}
这应该是输出:
{
_id: "001",
name: "something",
merged_arrays: [1,2,3,4,5,6,7]
}
棘手的部分是,重要部分对象是动态的,我不认为$setUnion可以使用运算符,因为它需要数组字段的精确列表。
有人可以帮我吗?
提前谢谢
您可以在 3.4 中使用以下聚合。
$objectToArray
将对象转换为键值对数组并$reduce
to $concatArrays
.
db.col.aggregate({
"$addFields":{
"merged_arrays":{
"$reduce":{
"input":{"$objectToArray":"$important_part"},
"initialValue":[],
"in":{"$concatArrays":["$$value", "$$this.v"]}
}
}
}
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)