mongodb - 查找包裹给定点 MongoDB 的多边形的最佳方法?

标签 mongodb geo

我有一个任意点代表房子的位置。在我的 MongoDB 中,我有一个集合,其中包含代表不同区域的多边形(类似于邮政编码)。

我想返回集合中给定点在该区域内的区域。

目前我正在将点转换成一个“小”框并使用这样的查询(按预期工作):

(被框化的点:[56.121371, 13.114797])

db.areas.find({
        "area" : {
                "$geoIntersects" : {
                        "$geometry" : {
                                "type" : "Polygon",
                                "coordinates" : [
                                        [
                                                [
                                                        56.120371,
                                                        13.113797
                                                ],
                                                [
                                                        56.120371,
                                                        13.115797
                                                ],
                                                [
                                                        56.122371,
                                                        13.115797
                                                ],
                                                [
                                                        56.122371,
                                                        13.113797
                                                ],
                                                [
                                                        56.120371,
                                                        13.113797
                                                ]
                                        ]
                                ]
                        }
                }
        }
});

我试过使用 $near 但它只适用于点。我也试过 $geoWithin 没有成功;我的猜测是它检查集合文档是否在查询中,而不是查询是否在文档中。

这应该是一个非常常见的查询,所以我想知道是否有更好的方法而不是创建一个“小”多边形?感觉像是一种“解决方法”。

最佳答案

$geoIntersects运算符允许查询两个 geoJSON 对象的交集,它适用于所有几何图形,包括 { type: "Point"}

关于mongodb - 查找包裹给定点 MongoDB 的多边形的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682971/

相关文章:

node.js - 一种在 Mongoose 中与用户加入帖子的方法

c# - 在圆周上求纬度和经度给出经纬度和半径

go - 按距离快速搜索数百万个坐标

mongodb - 如何使用 golang 翻译这个 mongo 查询 cmd

node.js - 创建用户组,什么是好方法?

node.js - 如何使用GridFS保存已保存文件的ID?

r - 球体表面地理数据的插值

jquery - 重定向除 1 个国家外的所有国家/地区

php - 执行邻近搜索的路线图

php - 在 MongoDB 中查找字段不为空的字段(在 PHP 中)