我想制作一个如下所示的集合:
{
_id: "id1",
"name": "A"
}
{
_id: "id2",
name: "B",
supervisor: "id1"
}
{
_id: "id3",
name: "C",
supervisor: "id1"
}
每个人最多只能有一名主管,而且一个人不能同时监督和监督。
那么我如何查询以这样的形式获得结果:
{
_id: "id1",
supervise: [
{
_id: "id2",
name: "B",
supervisor: "id1"
},
{
_id: "id3",
name: "C",
supervisor: "id1"
}
]
}
答案 0 :(得分:0)
您可以使用数组中$supervisor
和$push
个元素组的聚合:
db.device.aggregate(
[
{ $group : { _id : "$supervisor", supervise: { $push: "$$ROOT" } } }
]
)
它将为您返回数据:
{ "_id" : "id1", "supervise" : [ { "_id" : "id2", "name" : "B", "supervisor" : "id1" }, { "_id" : "id3", "name" : "C", "supervisor" : "id1" } ] }
{ "_id" : null, "supervise" : [ { "_id" : "id1", "name" : "A" } ] }
检查mongodb $group
aggregation