查找与多个点相交的多个多边形

时间:2018-09-04 09:58:35

标签: mongodb

假设我在MongoDB中有5k个多边形,我想用分散的25个点查询它们(即,相对于多边形不紧密聚集)。 是否可以有效地查询数据库?

我的理解是,您可以将这些点组合到一个geojson要素中,并进行交点。但这不是一个好主意,因为围绕这组点的边界框会很大,因此您将无法从多边形上的任何现有索引中真正受益。

或者,您也可以执行$ or查询(我会检查自己是否可行),但是大概这会孤立地对待每一位,这似乎效率不高(尽管比上一个选项)。

理想情况下,我想要类似postgis(伪代码)的东西:

select * from polygon_table
where geometry in ($1,$2,$3...)

据我所知,它将在逻辑上(在某种程度上)表现良好。

cartoon of points and polygons

1 个答案:

答案 0 :(得分:1)

25 $geoIntersects包裹在$or中。

例如

db.collection.find({ $or: [
     { loc: {
       $geoIntersects: {
          $geometry: { type: "Point", coordinates: [ 3, 4 ] } }
       }
     } },
     { loc: {
       $geoIntersects: {
          $geometry: { type: "Point", coordinates: [ 10, 20 ] } }
     } }

] })