假设我在MongoDB中有5k个多边形,我想用分散的25个点查询它们(即,相对于多边形不紧密聚集)。 是否可以有效地查询数据库?
我的理解是,您可以将这些点组合到一个geojson要素中,并进行交点。但这不是一个好主意,因为围绕这组点的边界框会很大,因此您将无法从多边形上的任何现有索引中真正受益。
或者,您也可以执行$ or查询(我会检查自己是否可行),但是大概这会孤立地对待每一位,这似乎效率不高(尽管比上一个选项)。
理想情况下,我想要类似postgis(伪代码)的东西:
select * from polygon_table
where geometry in ($1,$2,$3...)
据我所知,它将在逻辑上(在某种程度上)表现良好。
答案 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 ] } }
} }
] })