MongoDB如何找到包含指定Point的多边形?

fan*_*hou 5 geometry point geo mongodb

我将许多多边形插入到MongoDB(2.4.8)中,并希望找到指定Point所在的多边形.这似乎是一个常见的问题.但在阅读谷歌的所有文档后,我没有得到结果.所以创建这个问题.

例如

db.addr_poly.insert(
{ loc :
   { type : "Polygon" ,
     coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
} })
db.addr_poly.insert(
{ loc :
   { type : "Polygon" ,
     coordinates : [ [ [ 0 , 0 ] , [ -3 , -6 ] , [ -6 , -1 ] , [ 0 , 0 ] ] ]
} })
Run Code Online (Sandbox Code Playgroud)

现在如何找到包含Point(1,1)的多边形?

有人可以帮帮我吗?非常感谢!

Phi*_*ipp 13

使用$ geoIntersects运算符.它查询与您传递的GeoJSON对象相交的所有形状.当您将一个点传递给它时,它应该返回包含该点的所有形状.请记住,$ geoIntersects运算符仅适用于2dsphere索引,而不适用于2d索引.


KJ *_*ice 5

正如 @philipp 所说,您应该使用 $geoIntesects 运算符。我在试图弄清楚这个查询时遇到了最困难的时间。我想我应该分享它的外观,这样可能会为以后的人省去麻烦。

db.addr_poly.find({
    loc:{
        $geoIntersects: {
            $geometry: {
              type: "Point" ,
              coordinates: [1, 1]
            }
         }
     }
});
Run Code Online (Sandbox Code Playgroud)