Mongo db如何在一对多关系中返回文件?

时间:2016-10-29 19:49:02

标签: mongodb nosql

我想制作一个如下所示的集合:

{
    _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"   
        }
    ]
}

1 个答案:

答案 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