2016-10-29 25 views
0

我想打一個集合看起來是這樣的:Mongo db如何在一對多關係中返回文檔?

{ 
    _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

您可以通過$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" } ] } 

Check mongodb $group aggregation

相關問題