如何在聚合中进行$ lookup返回一个对象而不是数组

时间:2017-05-10 07:09:02

标签: node.js mongoose-populate

当我调用$ lookup时它返回数组,但我只需要一个对象。有什么方法我只能得到一个物体。我必须在$ group中加上$ lookup值。

 Message.aggregate(

            {$match:{$or:[{"sender":userId},{"receiver":userId}]}},          
            { $lookup: {from: 'users', localField: 'senderId', foreignField: '_id', as: 'from'} },

            {$sort:{messageTimeStamp:-1}},
            {
                $group:{"_id":
                {
                  "name":
                      }
                     $cond:[
                         {
                             $eq:["$receiver",userId]
                         },
                         {$concat:["$receiver"," and ","$sender"]},
                         {$concat:["$sender"," and ","$receiver"]}
                     ]
                  }
                },"message":{$first:"$message"},
                   "time":{$first:"$messageTimeStamp"},
                   "name":{$first:{
                     $cond:[
                         {
                              $eq:['$receiver',userId]
                        },
                         "$from"
                     ]
                  }},
                }
            },

1 个答案:

答案 0 :(得分:3)

$unwind可以帮到你。

  

从输入文档解构数组字段,为每个元素输出文档。

$unwind (aggregation)