找到包装给定点MongoDB的多边形的最佳方法是什么?

时间:2013-12-19 13:25:43

标签: 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没有成功;我的猜测是它检查集合文档是否在查询中,而不是查询是否在文档中。

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

1 个答案:

答案 0 :(得分:4)

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