我有一个包含对象数组的示例文档
[
{
array_a: [{"key1": "val1", "key2": "val2", "key3": null}, ...],
array_b: [{"key4": "val1", "key5": null, "key6": null}, ...]
},
...
]
如何删除值为null
的键?变为:
[
{
array_a: [{"key1": "val1", "key2": "val2"}, ...],
array_b: [{"key4": "val1"}, ...]
},
...
]
1条答案
按热度按时间anauzrmj1#
查询有点长。
$set
1.1.(
array_a
)$map
-从 1.1.1 迭代数组并返回新数组。1.1.1.
input
-$map
-将array_a
中的每个文档转换为键值对数组:[{ k: "key1", v: "val1" }]
.1.1.2.
$filter
-过滤v
不是null
的文档(键值对)。1.2.(
array_b
)与 1.1 的解释相同。2.1.(一米十二分一秒)一米十三分一秒
2.1.1
input
-$map
-迭代数组中的每个数组文档,以返回一个带有对象的数组。2.1.2
cond
-过滤非空文档{}
。2.2.(
array_b
)-与 2.1 的解释相同。Sample Mongo Playground
$set
级可以合并为一个级,也可以分成多个级以提高可读性。*