我正在使用MongoDB,我有两个如下集合:
人:
{
"name":"Bob",
"info":{
"birthplace":[
"Paris, France"
],
"birthdate":[
"18 June 1961"
]
}
}
城市:
{
name:"Paris",
country:"FR",
population:8022,
location:{
longitude:42.46372,
latitude:1.49129
}
}
对于出生地众所周知的每个人,我想找到该城市的位置和人口。我查看了文档,发现我们可以使用$lookup
进行汇总,如下所示:
Person.orders.aggregate([
{
$lookup:
{
from: "City",
localField: "birthplace",
foreignField: "name",
as: "inventory_docs"
}
}
])
但问题是City.name
的值包含在Person.birthplace
中,所以它们无法匹配,任何想法?谢谢!
答案 0 :(得分:0)
如果你首先放开“$ info.birthplace”,你的$ lookup会有效:
Person.orders.aggregate([{$unwind: "$info.birthplace"},
{$lookup: {from: "city",
localField: "info.birthplace",
foreignField: "name",
as: "inventory_docs"}
}]);
并且“$ info.birthplace”必须与来自城市的“名称”完全匹配(现在它没有,“巴黎,法国”不等于“巴黎“)。
除此之外,还不清楚为什么个人文档中的“info.birthplace”和“info.birthdate”是数组。它似乎毫无意义,因为一个人不能有一个以上的出生日期和地点。