2016-08-29 2 views
2

Wenn ich $lookup mache, in meinem Fall die foreignField:"_id", bekomme ich das gefundene Element in einem Array. Hier ist ein Dokument von dem Ausgang nach $lookup getan worden fromUser und toUser aus der users Sammlung abzurufen:

{ 
    _id : { from : 57b8da368e4a6e1f0043cb3d, to : 57c381af7008e51f009d92df }, 
    fromUser : [ 
     { 
      _id : 57b8da368e4a6e1f0043cb3d, 
      userName: "A" 
     } 
    ], 
    toUser : [ 
     { 
      _id : 57c381af7008e51f009d92df, 
      userName: "B" 
     } 
    ] 
} 

Wie Sie feststellen können fromUser und toUser Arrays sind. Wie fromUser und toUser so anstelle von Arrays projizieren sie enthalten nur die Benutzer-userName, wie hier:

{ 
    _id : { from : 57b8da368e4a6e1f0043cb3d, to : 57c381af7008e51f009d92df }, 
    fromUser: "A", 
    toUser: "B" 
} 

Antwort

5

Sie können das erreichen, indem eine $project Stufe Anhängen des $arrayElemAt Betreiber auf Ihre Aggregation Pipeline wie diese

// your previous stages incl. lookup 
... 
$project: { 
    fromUser: { $arrayElemAt: ["$fromUser.userName", 0] }, 
    toUser: { $arrayElemAt: ["$toUser.userName", 0] } 
} 
... 
mit
+4

Sie haben mir heute 3 Dinge beigebracht: Formatierung, Lesen von Dokumenten, und die Antwort. Vielen Dank! – Granga

Verwandte Themen