MongoDb:$geoIntersects 用于多个输入坐标

Yur*_*kov 3 geospatial mongodb

我有一个坐标列表,其中每个坐标都需要执行$geoIntersects查询。对于一个坐标,查询如下所示:

db.polygons.find({ 
    geometry: { 
        $geoIntersects: {
            $geometry: {
                type: "Point", coordinates: [24.053640, 49.812427]
            } 
        } 
    } 
})
Run Code Online (Sandbox Code Playgroud)

问题是有一个输入坐标列表,对于每个坐标我需要找到一个多边形。到目前为止,我发现的唯一方法是在应用程序代码中迭代它们并执行查询 N 次。

是否可以通过一个 MongoDB 查询来完成此操作?如果没有,任何关于如何优化的想法都值得赞赏。

Lui*_*res 5

一种可能的解决方案是将 Point 几何类型替换为 MultiPoint 几何类型,并将输入坐标列表作为数组传递。

db.polygons.find({ 
geometry: { 
    $geoIntersects: {
        $geometry: {
            type: "MultiPoint", coordinates: [[24.053640, 49.812427],[...]...] 
        } 
    } 
} 
})
Run Code Online (Sandbox Code Playgroud)

  • 我可以确认它有效,我使用的命令: db.polygons.find({ Geometry: { $geoIntersects: { $geometry: { type: "MultiPoint", 坐标: [[24.053640, 49.812427],[... ]...] } } } }) (2认同)