Gra*_*nga 3 mongodb aggregation-framework mongodb-aggregation
当我这样做时$lookup,在我的情况下foreignField:"_id",我在数组中得到找到的元素.下面是从后输出一个文档$lookup已经做了检索fromUser,并toUser从users集合:
{
_id : { from : 57b8da368e4a6e1f0043cb3d, to : 57c381af7008e51f009d92df },
fromUser : [
{
_id : 57b8da368e4a6e1f0043cb3d,
userName: "A"
}
],
toUser : [
{
_id : 57c381af7008e51f009d92df,
userName: "B"
}
]
}
Run Code Online (Sandbox Code Playgroud)
你可以注意到fromUser并且toUser是数组.如何投射fromUser,toUser而不是数组,他们只包含用户的userName,如下所示:
{
_id : { from : 57b8da368e4a6e1f0043cb3d, to : 57c381af7008e51f009d92df },
fromUser: "A",
toUser: "B"
}
Run Code Online (Sandbox Code Playgroud)
DAX*_*lic 10
你可以通过$project使用$ arrayElemAt运算符将一个阶段附加到聚合管道来实现这一点
// your previous stages incl. lookup
...
$project: {
fromUser: { $arrayElemAt: ["$fromUser.userName", 0] },
toUser: { $arrayElemAt: ["$toUser.userName", 0] }
}
...
Run Code Online (Sandbox Code Playgroud)
小智 6
如果你想获取数组中的第一个元素,那么你可以使用$first运算符(4.4 版本中的新增功能),并且它使用起来很简单。
{
$set: {
fromUser: {
$first: "$fromUser.userName"
},
toUser: {
$first: "$toUser.userName"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想获取数组中第一个元素以外的元素,则可以使用$arrayElemAt运算符。
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |