Điều gì đó như thế này nên làm điều đó;
db.example.aggregate(
{
$group: {
_id: { age: "$age", gender: "$gender" },
names: { $addToSet: "$name" }
}
},
{
$group: {
_id: { age: "$_id.age" },
children: { $addToSet: { gender: "$_id.gender", names:"$names" } }
}
}
)
... cho kết quả;
{
"_id" : {
"age" : 1
},
"children" : [
{ "gender" : "m", "names" : [ "G", "A" ] },
{ "gender" : "f", "names" : [ "J", "D" ] }
]
},
...
Nếu bạn muốn tuổi là _id
như trong ví dụ của bạn, chỉ cần thay thế _id
của nhóm thứ hai bởi;
_id: "$_id.age",