Mongodb $GEO在$box错误中?
我的MongoDB数据库中有以下文档:Mongodb $GEO在$box错误中?,mongodb,mongodb-query,geospatial,Mongodb,Mongodb Query,Geospatial,我的MongoDB数据库中有以下文档: { "_id": { "$oid": "55002a7916157e6021de5708" }, "city": "Wellington New Zealand", "location": [ 174.77623600000004, -41.2864603 ] } 当我试图通过以下地理空间查询找到它时,我不明白: db.collection.find({ "l
{
"_id": {
"$oid": "55002a7916157e6021de5708"
},
"city": "Wellington New Zealand",
"location": [
174.77623600000004,
-41.2864603
]
}
当我试图通过以下地理空间查询找到它时,我不明白:
db.collection.find({
"location": {
"$geoWithin": {
"$box": [
[165.8694369, -52.61941849999999],
[-175.831536, -29.2313419]
]
}
}
});
你能解释一下为什么上面的查询不起作用吗?这些坐标无效,因为“右上角”的经度与应该的经度相反:
db.collection.find({
“地点”:{
“$GEOIN”:{
“$box”:[
[165.8694369, -52.61941849999999],
[175.831536, -29.2313419]
]
}
}
})
这将正确返回所需的位置。我建议您在测试特性时使用类似的方法
您的“盒子”如下所示:
当然,它覆盖了地球纬度之间的所有区域,除了所需的区域。这就是它失败的原因。您是否尝试过在$box运算符中更改参数的顺序?MongoDB对你的纬度/经度的解释是否与你的理解相反?这是过去欺骗过我的东西。是的,我试过了,但不起作用:(您使用的是哪个版本的MongoDB?我使用的是最新的3.0版本,这是一个真正的错误,因为@geocodezip在这篇文章中提供了谷歌地图中的边界示例,感谢您的帮助。我从谷歌地图中获得了这些边界。在DB中查询之前是否可以检测并修复边界?@Erik我所说的是“正确的边界”为了回答您的问题,我还特别解释了为什么您的边界“不正确”。从提问开始,我希望您理解为什么您的假设不正确,并且您“应该”使用元数据,例如
(“国家”):“新西兰”}
在您的存储中,而不是像预期的那样为每个GeoJSON寻找边界$box
或“多边形”
。请查看对此建模的正确方法。