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

时间:2013-11-23 10:27:06

标签: mongodb geometry point geo

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

e.g。

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 ] ] ]
} })

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

任何人都可以帮助我吗?非常感谢!

2 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:2)

正如@philipp所说,你应该使用$ geoIntesects运算符。我正在努力弄清楚查询。我想我会分享它看起来的样子,以后可能会给别人带来麻烦。

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