Sha*_*Roy 5 mongodb aggregation-framework
当我们$lookup在MongoDB的聚合查询中使用时,我们使用这种格式
{
$lookup:
{
from: "users",
localField: "userId",
foreignField: "_id",
as: "user"
}
}
Run Code Online (Sandbox Code Playgroud)
其中user作为对象数组返回,然后我们需要$arrayElemAt在$project舞台上使用一段时间以作为单个对象返回。喜欢
{
$project:
{
user:
{
$arrayElemAt: [ "$user", 0 ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我们如何可以返回user为单个对象,而不是阵列的$lookup阶段?
arg*_*g20 11
您还不能这样做$lookup,最干净的方法是随后添加一个新阶段,如下所示:
{
$unwind: "$user"
}
Run Code Online (Sandbox Code Playgroud)
由于每个文档只有一个用户,因此您最终会得到相同的集合,但这次用户不再是数组。如果每个文档有多个用户(例如 2 个),那么您最终会得到 2 个文档,每个文档对应一个用户。