Можете да използвате заявката по-долу.
Промених няколко неща.
1. Няма $elemMatch
се изисква за единичен критерий. Вместо това използвайте нотация с точка.
2. Преместете $map
на подгрупата вътре в групата $map
оператор.
[
{"$match":{
"empId":"19107",
"address.country":"AUS",
"group.primaryGroup.primary":"Y",
"group.subGroup.primarySubGroup.primary":"Y"
}},
{"$project":{
"empId":1,
"mobile":1,
"address":{"$filter":{"input":"$address","as":"d","cond":{"$eq":["$$d.country","AUS"]}}},
"group":{
"$map":{
"input":"$group",
"as":"v",
"in":{
"groupId":"$$v.groupId",
"primaryGroup":{"$filter":{"input":"$$v.primaryGroup","as":"vp","cond":{"$eq":["$$vp.primary","Y"]}}},
"subGroup":{
"$map":{
"input":"$$v.subGroup",
"as":"n",
"in":{
"subGroupId":"$$n.subGroupId",
"primarySubGroup":{"$filter":{"input":"$$n.primarySubGroup","as":"mp","cond":{"$eq":["$$mp.primary","Y"]}}}
}
}
}
}
}
}
}}
]