当我们在 MongoDB 的 ggregate查询中使用$lookup
时,我们使用此格式
{
$lookup:
{
from: "users",
localField: "userId",
foreignField: "_id",
as: "user"
}
}
其中user
作为对象数组返回,然后我们需要在$arrayElemAt
阶段使用$project
作为单个对象返回。像
{
$project:
{
user:
{
$arrayElemAt: [ "$user", 0 ]
}
}
}
所以我的问题是我们如何从user
阶段返回$lookup
作为单个对象而不是数组?
答案 0 :(得分:0)
你不能用$lookup
做到这一点,最简单的方法就是在这之后添加一个新的舞台:
{
$unwind: "$user"
}
由于每个文档只有一个用户,因此您最终会使用相同的集合,但这次用户不再是一个数组。如果每个文档有多个用户(例如2),那么每个用户最终会得到2个文档。