【发布时间】:2021-02-17 23:28:27
【问题描述】:
我有以下数据。我想在属于name=name2的内部数组中找到value=v2(删除不等于v2的其他值)。如何为此编写聚合?对我来说最困难的部分是过滤仅属于 name=name2 的 nestedArray。
{
"_id": 1,
"array": [
{
"name": "name1",
"nestedArray": [
{
"value": "v1"
},
{
"value": "v2"
}
]
},
{
"name": "name2",
"nestedArray": [
{
"value": "v1"
},
{
"value": "v2"
}
]
}
]
}
所需的输出如下。请注意value=v1 保留在name=name1 下,而value=v1 在name=name2 下被删除。
{
"_id": 1,
"array": [
{
"name": "name1",
"nestedArray": [
{
"value": "v1"
},
{
"value": "v2"
}
]
},
{
"name": "name2",
"nestedArray": [
{
"value": "v2"
}
]
}
]
}
【问题讨论】:
-
不清楚您到底想要什么:获取带有
value=v1和name=name1的文档,或者删除给定value和name的值? -
@chridam。编辑了问题。例如,输入为 name="name2", value="v2"。意思是我想查看外部“数组”,并查找名称=“name2”的条目,然后我想查看它的“嵌套数组”并删除值!=“v2”的条目。如果外部“数组”中没有 name="name2" 的条目,则不会删除任何内容。
-
@J.F.编辑了问题。我的意思是删除一个给定值和名称的值
标签: mongodb filter nested mongodb-query aggregation