我正在嘗試爲文檔中的嵌入式數組檢索一些查找數據。下面是數據的一個示例:
[
{
"_id": "58a4fa0e24180825b05e14e9",
"user_id": "589cf6511b94281f34617a13",
"user": {
"firstname": "John",
"lastname": "Doe"
},
"stages": [
{
"user_id": "589cf6511b94281f34617a13"
},
{
"user_id": "589cf6511b94281f346343c3"
}
],
}
]
正如所看到的,stages
是一個數組,僅含有user_id
字段。這些指向另一個名爲users
的集合中的_id
字段。
這裏是我得到了上述結果:
db.collection('things').aggregate([{
$match: finder
},
{
$lookup: {
from: 'users',
localField: 'user_id',
foreignField: '_id',
as: 'user'
}
},
{
$unwind: '$user'
}
]);
現在,這是非常簡單的:選擇的記錄,與user
場擡起頭$lookup
。但我怎樣才能與stages
的元素一樣?理想的結果是這樣的:
[
{
"_id": "58a4fa0e24180825b05e14e9",
"user_id": "589cf6511b94281f34617a13",
"user": {
"firstname": "John",
"lastname": "Doe"
},
"stages": [
{
"user_id": "589cf6511b94281f34617a13",
"firstname": "John",
"lastname": "Doe"
},
{
"user_id": "589cf6511b94281f346343c3"
"firstname": "Jane",
"lastname": "Doe"
}
],
}
]
現在說:「這個領域USER_ID必須是蓄電池對象」。 –
我的不好,請在你想提取的字段之前放一個$。像{_id:'$ _id',userId:「$ user_id」... –
不,依然如此。 –