15
因此,衆所周知,find()
返回一個結果數組,而findOne()
只返回一個簡單的對象。如何使用MongoDBs``lookup`作爲`findOne()`
有了Angular,這會產生巨大的差異。而不是去{{myresult[0].name}}
,我可以簡單地寫{{myresult.name}}
。
我發現在聚合管道中的$lookup
方法返回一個結果數組,而不是僅僅一個對象。
例如,我有兩個colletions:
users
集合:
[{
"firstName": "John",
"lastName": "Smith",
"country": 123
}, {
"firstName": "Luke",
"lastName": "Jones",
"country": 321
}]
countries
集合:
[{
"name": "Australia",
"code": "AU",
"_id": 123
}, {
"name": "New Zealand",
"code": "NZ",
"_id": 321
}]
我總$lookup
:個
db.users.aggregate([{
$project: {
"fullName": {
$concat: ["$firstName", " ", "$lastName"]
},
"country": "$country"
}
}, {
$lookup: {
from: "countries",
localField: "country",
foreignField: "_id",
as: "country"
}
}])
從查詢結果:
[{
"fullName": "John Smith",
"country": [{
"name": "Australia",
"code": "AU",
"_id": 123
}]
}, {
"fullName": "Luke Jones",
"country": [{
"name": "New Zealand",
"code": "NZ",
"_id": 321
}]
}]
正如你可以通過上面的結果看到的,每個country
是一個數組,而不是一個單一的對象像"country": {....}
。
如何讓我的$lookup
返回單個對象而不是數組,因爲它只會匹配單個文檔?