$filter Upto 3 Nested Level In Mongodb
I have a below collection [ { 'Array1': [ { 'Array2': [ { 'name': '6666', 'Array3': [ { '_id': 128938120, 'nest'
Solution 1:
Basically you have to use $filter
for each level to apply your condition and $map
for each array that has nested array inside. That's because you want to pass filtered array to the output. So there will be 3
filters and 2
maps. Indentations might be really helpful in this case. Try:
db.collection.aggregate([
{
$project: {
Array1: {
$map: {
input: { $filter: { input: "$Array1", as: "a1", cond: { $eq: ["$$a1.name", "old apartment" ] } } },
as: "a1",
in: {
name: "$$a1.name",
Array2: {
$map: {
input: { $filter: { input: "$$a1.Array2", as: "a2", cond: { $eq: [ "$$a2.name", "6666" ] } } },
as: "a2",
in: {
name: "$$a2.name",
Array3: { $filter: { input: "$$a2.Array3", as: "a3", cond: { $eq: [ "$$a3.nest", "nokia" ] } } }
}
}
}
}
}
}
}
}
])
Post a Comment for "$filter Upto 3 Nested Level In Mongodb"