查找给定的经度,纬度对位于MongoDB中的任何一个多边形中

问题描述:

根据我目前对MongoDB的理解,我们通过传递一组[long,lat]对数组来搜索我们的集合,以检查该文档的[long, lat]对在坐标[[ [], [], [] ]]内退出。查找给定的经度,纬度对位于MongoDB中的任何一个多边形中

I,E。,

db.SomeCollection.find({ 
    "location":{ 
     $geoWithin: { 
      $geometry: { 
       type: "Polygon", 
       coordinates: [ 
        [[1, 2], [1, 3], [1, 4]], 
        [[2, 5], [2, 6], [2, 7]] 
       ] } 
     } 
    } 
}) 

什么我期待的是,我需要的[长,经纬度]一对馈送到含有固定文档多边形地理栅栏阵列和结束,如果[长,经纬度]对存在于这些[多边形地理栅栏阵列]中的任何一个。

这在MongoDB中可能吗?我的问题有效吗?

请注意:我是MongoDB以及地理空间数据的新手,因此 原谅如果问题中包含错误的术语。

+1

我认为这篇文章包含了你在找什么:HTTP: //robgillen.com/technology/2016/09/03/geofences-in-mongodb/ – Robin

几天后,我回到我的问题,因为我找到了答案。

该解决方案发布在here by Jacob Ribnik

因此它实现我的问题它会像下面:

db.Poly_Geofence_collection.find(
{ 
    "location": { 
     $geoIntersects: { 
      $geometry: { 
       type: "Point", 
       coordinates: [1,1] 
      } 
     } 
    } 
}); 

凡我Poly_Geofence_collection收集的样子:

{ 
    "_id": ObjectId("SomeRandom12ByteObjectId"), 
    "location" : { 
     "type" : "Polygon", 
     "name" : "Location Name", 
     "coordinates" : [ 
      [ 
       [0, 0], [1, 2], [1, 1], [2, 1], [0, 0] 
      ] 
     ] 
    } 
}