2016-08-29 2 views
2

Когда я делаю $lookup, в моем случае foreignField:"_id", я получаю найденный элемент в массиве. Вот один документ из выходного сигнала после $lookup было сделано, чтобы получить fromUser и toUser из users коллекции:

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

Как вы можете заметить fromUser и toUser массивы. Как проект fromUser и toUser поэтому вместо массивов они содержат только пользователя userName, как здесь:

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

ответ

5

Вы можете достичь этого путем добавления $project стадии с помощью оператора $arrayElemAt к вашей агрегации трубопровода, как этот

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

Вы научили меня 3 вещам сегодня: форматирование, чтение документов более тщательно и ответ. Спасибо! – Granga

Смежные вопросы