$ geoWithin $ box bug?

时间:2015-03-20 12:02:24

标签: mongodb mongodb-query geospatial

我的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]
            ]
        }
    }
});

你能解释为什么上面的查询不起作用吗?

1 个答案:

答案 0 :(得分:4)

这些坐标无效,因为"右上角"与应有的情况相反:

db.collection.find({
    "location": {
        "$geoWithin": {
            "$box": [
                [165.8694369, -52.61941849999999],
                [175.831536, -29.2313419]
            ]
        }
    }
})

正确返回所需位置。我建议您在测试功能时使用http://geojsonlint.com/之类的内容。

你的"框"看起来像这样:

enter image description here

当然这涵盖了纬度之间的所有地球,除了"所需的区域。所以这就是它失败的原因。