MongoDB聚合:_id由_id查找,然后获取第一个元素值

时间:2016-08-29 22:32:37

标签: mongodb aggregation-framework mongodb-aggregation

当我执行foreignField:"_id"时,在我的情况下$lookup,我在数组中找到了找到的元素。以下是fromUser完成后从toUser集合中检索users{ _id : { from : 57b8da368e4a6e1f0043cb3d, to : 57c381af7008e51f009d92df }, fromUser : [ { _id : 57b8da368e4a6e1f0043cb3d, userName: "A" } ], toUser : [ { _id : 57c381af7008e51f009d92df, userName: "B" } ] } 的输出中的一个文档:

fromUser

您可以注意到toUserfromUser是数组。如何预测toUseruserName,而不是数组,它们只包含用户的{ _id : { from : 57b8da368e4a6e1f0043cb3d, to : 57c381af7008e51f009d92df }, fromUser: "A", toUser: "B" } ,如下所示:

octaves

1 个答案:

答案 0 :(得分:6)

您可以通过使用$arrayElemAt运算符将$project阶段附加到您的汇总管道来实现这一目标

// your previous stages incl. lookup
...
$project: {
    fromUser: { $arrayElemAt: ["$fromUser.userName", 0] },
    toUser: { $arrayElemAt: ["$toUser.userName", 0] }
}
...
相关问题