检查点是否位于mongodb中的面内

8e2ybdfx  于 2022-12-03  发布在  Go
关注(0)|答案(1)|浏览(122)

下面是保存在MongoDB中的文档示例,我将多边形数据保存为LNG & lat,如//www.example.com中所述https://www.mongodb.com/docs/manual/geospatial-queries/。我想找到给定点位于多边形内部的文档列表。例如:语言:-118.421871,最新版本:33.943645.

the index is created for zones.area.geo.

我尝试了Mongolink中提到的解决方案。但是数据没有来,我是mongo的新手,所以任何帮助都是感激的。

{
  "zoneType": "GEO_FENCE",
  "zones": [
    {
      "id": "5b9ddf55-d45e-4358-8f37-8fddb7d424e8",
      "name": "Los Angeles, CA 90045, United States",
      "area": {
        "geo": {
          "coordinates": [
            [
              [
                -118.427456,
                33.945997
              ],
              [
                -118.418435,
                33.946995
              ],
              [
                -118.417232,
                33.938442
              ],
              [
                -118.426425,
                33.945997
              ],
              [
                -118.427456,
                33.945997
              ]
            ]
          ],
          "type": "Polygon"
        }
      }
    }
  ]
}

下面是我用来检查点是否在多边形内部的聚合查询。

[
  {
    '$match': {
      '$and': [
        {
          'companyId': {
            '$in': [
              new ObjectId('63368dbb50f6df4a67f08695'), '63368dbb50f6df4a67f08695'
            ]
          }
        }, {
          '$or': [
            {
              'zones.area.geo': {
                '$geoIntersects': {
                  '$geometry': {
                    'type': 'Point', 
                    'coordinates': [
                      -118.426253, 33.945641
                    ]
                  }
                }
              }
            }
          ]
        }
      ]
    }
  }
]

请指导我完成这件事。谢谢

k10s72fa

k10s72fa1#

返回结果的工作查询为:

db.collection.aggregate([
  {$match: {
    $or: [
       {companyId: {$in: [ObjectId('63368dbb50f6df4a67f08695'), '63368dbb50f6df4a67f08695']}}, 
          {'zones.area.geo': {
            '$geoIntersects': {
              '$geometry': {
                'type': 'Point', 
                'coordinates': [-118.4218888,  33.944760]
            }
          }
        }
      }
    ]
  }}
])

具有索引:zones.0.area.geo: 2dsphere
问题中的请求点如下所示:

相关问题