首页 > 解决方案 > MongoDb:$geoIntersects 用于多个输入坐标

问题描述

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

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

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

是否可以使用一个 MongoDB 查询来做到这一点?如果没有,任何关于如何优化的想法都值得赞赏。

标签: mongodbgeospatial

解决方案


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

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

推荐阅读