当我执行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"
}
,如下所示:
octaves
答案 0 :(得分:6)
您可以通过使用$arrayElemAt运算符将$project
阶段附加到您的汇总管道来实现这一目标
// your previous stages incl. lookup
...
$project: {
fromUser: { $arrayElemAt: ["$fromUser.userName", 0] },
toUser: { $arrayElemAt: ["$toUser.userName", 0] }
}
...