2016-10-29 7 views
0

Ich möchte eine Sammlung machen, die wie folgt aussehen:Mongo db wie man Dokument in einer Beziehung zurückgibt?

{ 
    _id: "id1", 
    "name": "A" 
} 

{ 
    _id: "id2", 
    name: "B", 
    supervisor: "id1" 
} 

{ 
    _id: "id3", 
    name: "C", 
    supervisor: "id1" 
} 

Jede Person höchstens einen Betreuer haben kann und eine Person kann nicht überwachen und gleichzeitig überwacht werden.

So wie kann ich die Ergebnisse in einer Form, wie diese erhalten Abfrage zu:

{ 
    _id: "id1", 
    supervise: [ 
     { 
      _id: "id2", 
      name: "B", 
      supervisor: "id1" 
     }, 
     { 
      _id: "id3", 
      name: "C", 
      supervisor: "id1" 
     } 
    ] 
} 

Antwort

0

Sie eine Aggregation mit einer Gruppe von $supervisor und $push Elementen in einem Array verwenden können:

db.device.aggregate(
    [ 
    { $group : { _id : "$supervisor", supervise: { $push: "$$ROOT" } } } 
    ] 
) 

es wird für Sie Daten zurück:

{ "_id" : "id1", "supervise" : [ { "_id" : "id2", "name" : "B", "supervisor" : "id1" }, { "_id" : "id3", "name" : "C", "supervisor" : "id1" } ] } 
{ "_id" : null, "supervise" : [ { "_id" : "id1", "name" : "A" } ] } 

prüfen mongodb $group aggregation