我将许多多边形插入到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)的多边形?
任何人都可以帮助我吗?非常感谢!
答案 0 :(得分:13)
使用$geoIntersects operator。它查询与您传递的GeoJSON对象相交的所有形状。当您将一个点传递给它时,它应该返回包含该点的所有形状。请记住,$ geoIntersects运算符仅适用于2dsphere索引,而不适用于2d索引。
答案 1 :(得分:2)
正如@philipp所说,你应该使用$ geoIntesects运算符。我正在努力弄清楚查询。我想我会分享它看起来的样子,以后可能会给别人带来麻烦。
db.addr_poly.find({
loc:{
$geoIntersects: {
$geometry: {
type: "Point" ,
coordinates: [1, 1]
}
}
}
});