合并相同结果的猫鼬

时间:2018-12-07 11:41:51

标签: mongodb mongoose mongodb-query aggregation-framework

我在对象数组中有结果,并且我想在猫鼬中按相同结果分组。例如,我得到以下结果。

[ 
  { 
   projectId: 5c0a4083753a321c6c4ee024,
   userId: 5c0a29c697e71a0d28b910a9
  },
  { 
   projectId: 5c0a2a8897e71a0d28b910ac,
   userId: 5c0a29e597e71a0d28b910aa,
  },
  { 
   projectId: 5c0a4083753a321c6c4ee024,
   userId: 5c0a29e597e71a0d28b910aa,
  } 
]

现在我想为同一用户提供一个对象,并结合如下所示的projectId数组:

{
  userId: 5c0a29e597e71a0d28b910aa, 
  projectId: [
     5c0a2a8897e71a0d28b910ac,
     5c0a4083753a321c6c4ee024
  ],
} 

请帮助我,我该如何实现这一目标或向我提出其他建议。谢谢。Attached result

1 个答案:

答案 0 :(得分:0)

您可以使用以下汇总

db.collection.aggregate([
  { "$group": {
    "_id": "$userId",
    "projectId": { "$push": "$projectId" }
  }},
  { "$lookup": {
    "from": "users",
    "localField": "_id",
    "foreignField": "_id",
    "as": "user"
  }},
  { "$lookup": {
    "from": "projects",
    "localField": "projectId",
    "foreignField": "_id",
    "as": "projectId"
  }}
])