我的mongo数据有以下结构,我试图从一个邮政编码到另一个邮政编码。所以我有zip1 98345和邮编2的98341,我怎样才能获得里程?如果有更好的方法来构建这些数据,请告诉我(以及获取里程的查询)。谢谢!
{ "zip" : 98345,
"zips" : [
{ "to" : 98453, "distances" : { "miles" : 1, "km" : 0 } },
{ "to" : 98341, "distances" : { "miles" : 3.9, "km" : 4.7 }, ...
]
},
{ "zip" : 98323,
"zips" : [
{ "to" : 98395, "distances" : { "miles" : 1, "km" : 0 } },
{ "to" : 98373, "distances" : { "miles" : 3.9, "km" : 4.7 }, ...
]
}, ....
答案 0 :(得分:1)
通过简单的查找,有几种方法可以做到这一点。这是其中之一:
db.zips.find( { "zip":98345, "zips.to":98341},
{"zip":1, "zips.$.distances":1,_id:0})
{ "zip" : 98345, "zips" : [ { "to" : 98341, "distances" : { "miles" : 3.9, "km" : 4.7 } } ] }
这就是说,将具有zip 98345并具有zips阵列成员的文档与:98341匹配并返回给我zip并且只是该文档中匹配的数组元素。
答案 1 :(得分:0)
$unwind
应该在这里提供帮助。
请测试一下。
db.zipcodes.aggregate(
{ $unwind : "$zips"},
{ $match : {"zip" :98345, "zips.to" : 98341}},
{ $project : {"zips.distances.miles" :1, _id:0}}
);