Bạn có thể đạt được điều đó bằng cách sử dụng $unwind
và sau đó là $group
với $push
, như thế này:
db.pitcrewdb.aggregate([
{
"$match": {
"run_number": "1",
"frames.frame_number": {
"$gte": 2
}
}
},
{
"$project": {
"_id": 0
}
},
{
"$unwind": "$frames"
},
{
"$match": {
"frames.frame_number": {
"$gte": 2
}
}
},
{
"$group": {
"_id": "$run_number",
"frames": {
"$push": "$frames"
}
}
}
])
$unwind
sẽ hủy mảng của bạn và sau đó bạn lọc kết quả và sau $group
chúng một lần nữa
Hoặc bạn cũng có thể làm điều đó bằng cách sử dụng $filter
db.pitcrewdb.aggregate([
{
"$match": {
"run_number": "1"
}
},
{
"$project": {
"_id": 0,
"frames": {
$filter: {
input: "$frames",
as: "frame",
cond: {
$gte: [
"$$frame.frame_number",
2
]
}
}
}
}
}
])