我有一個關於MongoDb聚合的$group
參數的問題。我的數據結構如下所示:
我「事件」集合包含此單個文件:
{
"_id": ObjectId("mongodbobjectid..."),
"name": "Some Event",
"attendeeContainer": {
"min": 0,
"max": 10,
"attendees": [
{
"type": 1,
"status": 2,
"contact": ObjectId("mongodbobjectidHEX1")
},
{
"type": 7,
"status": 4,
"contact": ObjectId("mongodbobjectidHEX2")
}
]
}
}
我「聯繫」集合包含這些文件:
{
"_id": ObjectId("mongodbobjectidHEX1"),
"name": "John Doe",
"age": 35
},
{
"_id": ObjectId("mongodbobjectidHEX2"),
"name": "Peter Pan",
"age": 60
}
我想要做的是在「事件」集合上執行aggregate
查詢,並獲得以下結果L「接觸」的數據:
"$unwind" : "$attendeeContainer.attendees",
"$lookup" : { "from" : "contactinfo", "localField" : "attendeeContainer.attendees.contact","foreignField" : "_id", "as" : "contactInfo" },
"$unwind" : "$contactInfo",
"$group" : { "_id": "$_id",
"name": { "$first" : "$name" },
...
"contact": { "$push": { "contact": "$contactInfo"} }
}
然而,這導致了「接觸」陣正對「事件」:
{
"_id": ObjectId("mongodbobjectid..."),
"name": "Some Event",
"attendeeContainer": {
"min": 0,
"max": 10,
"attendees": [
{
"type": 1,
"status": 2,
"contact": {
"_id": ObjectId("mongodbobjectidHEX1"),
"name": "John Doe",
"age": 35
}
},
{
"type": 7,
"status": 4,
"contact": {
"_id": ObjectId("mongodbobjectidHEX2"),
"name": "Peter Pan",
"age": 60
}
}
]
}
}
我使用的是現在看起來如下(縮短的版本)的參數(由於分組)而不是數組中的一個文檔在每個「attendeeContainer.attendees」處。 如何將「聯繫人」陣列推到「attendeeContainer.attendees」? (如上面的所期望的輸出)
我嘗試之類的東西:
"attendeeContainer.attendees.contact": { "$push": { "contact": "$contactInfo"} }
但是顯然的mongodb不允許「」在$group
階段。
等一下!你剛剛創建了自己的[問題]的副本(https://stackoverflow.com/questions/40609209/mongodb-lookup-query-with-multiple-fields-from-objects-array)? – styvane
不,我沒有。前面的問題與$查詢查詢有關。這與分組有關,並且具有更復雜的情況。 –