如何在MongoDB的$ lookup中返回单个对象而不是数组?

时间:2017-01-05 10:26:45

标签: mongodb aggregation-framework

当我们在 MongoDB ggregate查询中使用$lookup时,我们使用此格式

{
   $lookup:
     {
       from: "users",
       localField: "userId",
       foreignField: "_id",
       as: "user"
     }
}

其中user作为对象数组返回,然后我们需要在$arrayElemAt阶段使用$project作为单个对象返回。像

{
  $project:
   {
    user:
      { 
        $arrayElemAt: [ "$user", 0 ] 
      }
   }
}

所以我的问题是我们如何从user阶段返回$lookup作为单个对象而不是数组

1 个答案:

答案 0 :(得分:0)

你不能用$lookup做到这一点,最简单的方法就是在这之后添加一个新的舞台:

{
  $unwind: "$user"
}

由于每个文档只有一个用户,因此您最终会使用相同的集合,但这次用户不再是一个数组。如果每个文档有多个用户(例如2),那么每个用户最终会得到2个文档。