Bạn có thể thử tổng hợp bên dưới
Về cơ bản, bạn cần lặp qua từng mảng bằng cách sử dụng $map
tổng hợp và cuối cùng sử dụng $filter
với cái cuối cùng.
db.collection.aggregate([
{ "$project": {
"array1": {
"$map": {
"input": "$array1",
"as": "a1",
"in": {
"array2": {
"$map": {
"input": "$$a1.array2",
"as": "a2",
"in": {
"array3": {
"$filter": {
"input": "$$a2.array3",
"as": "a3",
"cond": { "$lte": ["$$a3.sampleId", 2] }
}
}
}
}
}
}
}
}
}}
])
Đầu ra
[
{
"array1": [
{
"array2": [
{
"array3": [
{
"sampleId": 1
},
{
"sampleId": 2
}
]
},
{
"array3": []
}
]
},
{
"array2": [
{
"array3": [
{
"sampleId": 1
}
]
}
]
}
]
}
]