MongoDB将$ lookup结果添加到数组

时间:2018-12-10 14:06:10

标签: mongodb

我有两个收藏夹

用户:

\r*\n

服务:

{
  { _id: 1, name: 'John' },
  { _id: 2, name: 'Sarah' },
  { _id: 3, name: 'Mike' }
}

我需要这样的结果(来自服务):

{
  { _id: 1, 
    payment: [
      { uid: 1, paid: true },
      { uid: 2, paid: false }
    ]
  },
  { _id: 2, 
    payment: [
      { uid: 3, paid: true }
    ]
  }
}

我可以通过uid字段进行$ lookup,但是如何在查找结果中的每个项目中添加“ paid”字段?我知道这一定很简单...但现在不适合我;)

谢谢!

1 个答案:

答案 0 :(得分:0)

db.getCollection('services').aggregate([
    { "$match": {} },
    { "$unwind": '$payment' },
    { "$lookup": {
        "from": "users",
        "localField": "payment.cid",
        "foreignField": "_id",
        "as": "user_data"
    }},
    { "$unwind": '$user_data' },
    { "$addFields": {
        "payment.user.name": "$user_data.name",
    }},
    { "$group": {
        "_id": "$_id",
        "payment": { "$push": "$payment" }
    }}
])