【发布时间】:2017-06-02 12:17:53
【问题描述】:
您好,有一份格式如下的文件:
{
"_id":"someId",
"someArray":[
{
"subId":1,
"subArray":[
{
"field1":"A",
"filterMe":"NO"
},
{
"field1":"B",
"filterMe":"YES"
}
]
},
{
"subId":2,
"subArray":[
{
"field1":"C",
"filterMe":"YES"
},
{
"field1":"D",
"filterMe":"NO"
}
]
}
]
}
如何根据某些条件过滤子数组。如果字段 filterMe 为“YES”,则示例过滤掉子数组。所以最后输出的json应该是这样的
{
"_id":"someId",
"someArray":[
{
"subId":1,
"subArray":[
{
"field1":"A",
"filterMe":"NO"
}
]
},
{
"subId":2,
"subArray":[
{
"field1":"D",
"filterMe":"NO"
}
]
}
]
}
我尝试了以下方式,但是它过滤了整个子数组。
db.testJson.aggregate([
{ $project: {
'someArray.subArray': {
$filter: {
input: '$someArray.subArray',
as: 'input',
cond: {$eq: ["$$input.filterMe", "YES"]}
}}
}}
]);
【问题讨论】:
-
看看这是否有帮助。 stackoverflow.com/questions/29071748/…
-
@Veeram 这不是这里要问的
-
@Neil Lunn 被推荐的帖子有一个答案与您当前的答案完全一样,没有额外的外部
$filter。我错过了什么?
标签: mongodb mongodb-query aggregation-framework