Hi have a document in the format :
{
"_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"
}
]
}
]
}
how can i filter the subArray based on some criteria. Example filter out the subArray if field filterMe is "YES". so finally the output json should be like
{
"_id":"someId",
"someArray":[
{
"subId":1,
"subArray":[
{
"field1":"A",
"filterMe":"NO"
}
]
},
{
"subId":2,
"subArray":[
{
"field1":"D",
"filterMe":"NO"
}
]
}
]
}
I tried in the below way but, its filtering the whole subArray.
db.testJson.aggregate([
{ $project: {
'someArray.subArray': {
$filter: {
input: '$someArray.subArray',
as: 'input',
cond: {$eq: ["$$input.filterMe", "YES"]}
}}
}}
]);
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…