Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb $GEO在$box错误中?_Mongodb_Mongodb Query_Geospatial - Fatal编程技术网

Mongodb $GEO在$box错误中?

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

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

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

这些坐标无效,因为“右上角”的经度与应该的经度相反:

db.collection.find({
“地点”:{
“$GEOIN”:{
“$box”:[
[165.8694369, -52.61941849999999],
[175.831536, -29.2313419]
]
}
}
})
这将正确返回所需的位置。我建议您在测试特性时使用类似的方法

您的“盒子”如下所示:


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

您是否尝试过在$box运算符中更改参数的顺序?MongoDB对你的纬度/经度的解释是否与你的理解相反?这是过去欺骗过我的东西。是的,我试过了,但不起作用:(您使用的是哪个版本的MongoDB?我使用的是最新的3.0版本,这是一个真正的错误,因为@geocodezip在这篇文章中提供了谷歌地图中的边界示例,感谢您的帮助。我从谷歌地图中获得了这些边界。在DB中查询之前是否可以检测并修复边界?@Erik我所说的是“正确的边界”为了回答您的问题,我还特别解释了为什么您的边界“不正确”。从提问开始,我希望您理解为什么您的假设不正确,并且您“应该”使用元数据,例如
(“国家”):“新西兰”}
在您的存储中,而不是像预期的那样为每个GeoJSON寻找边界
$box
“多边形”
。请查看对此建模的正确方法。