我的MongoDB数据库中有以下文档:
{
"_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]
]
}
}
});
你能解释为什么上面的查询不起作用吗?
答案 0 :(得分:4)
这些坐标无效,因为"右上角"与应有的情况相反:
db.collection.find({
"location": {
"$geoWithin": {
"$box": [
[165.8694369, -52.61941849999999],
[175.831536, -29.2313419]
]
}
}
})
正确返回所需位置。我建议您在测试功能时使用http://geojsonlint.com/之类的内容。
你的"框"看起来像这样:
当然这涵盖了纬度之间的所有地球,除了"所需的区域。所以这就是它失败的原因。