我在两个集合中有一个独特的字段,即"ip“。一个集合包含机器数据,另一个包含地理数据。
是否有一种方法可以从两个集合中聚合数据并使用这些数据创建第三个集合?
例如:
geo:
"ip" : "1.1.1.1", "lat" : 1.29, "lon" : 103.86
"ip" : "2.2.2.2", "lat" : 1.29, "lon" : 103.86
machines:
"ip" : "1.1.1.1", "load" : 5
"ip" : "2.2.2.2", "load" : 7
## becomes a new collection
"lat" : 1.29, "lon" : 103.86, "load" : 12
我正在为MongoDB使用Python驱动程序。
发布于 2016-03-15 21:01:28
是的,有一种使用$out语句的方法
假设您有两个集合"pc“和"geo”,您将创建集合"allData“-- mongo查询将如下所示:
db.pc.aggregate([
{
$lookup:
{
from:"geo" ,
localfield:"ip",
foreginField:"ip",
as: geoData
}
},
{
$unwind:"$geoData"
},
{
$out :"allData"
}
])
要形状您的allData集合,可以按需要使用$project添加/删除字段。
https://stackoverflow.com/questions/36020417
复制相似问题