我有两个收藏夹
用户:
\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”字段?我知道这一定很简单...但现在不适合我;)
谢谢!
答案 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" }
}}
])