Как выполнить поиск близости по вложенному массиву полигонов в mongodb? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть коллекция с вложенным массивом многоугольников, сохраненная в указанном ниже формате:

_id: ObjectId("...."),
"attributes": {
    "zones": [
      {
        "zoneName": "...",
        "zoneLocs" : [
          {
             "type" : "Polygon",
             "coordinates" : [[...]]
          }
          ....
        ]
      }
      ....
    ]
}

Я хочу выполнить поиск геоджона в этой коллекции, где я передаю точку и максимальное расстояниезначение и вытащите все документы, которые имеют многоугольник в закрытой области.

Я попытался сделать это, используя $ elemMatch, $ geoWithin и $ center.Мой последний запрос выглядел следующим образом, но не принес никаких результатов, хотя в области включения были полигоны:

  {
      "attributes.zones": {
          "$elemMatch":{
              "zoneLocs": {
                  "$elemMatch" : {
                     "$geoWithin": {
                       "$center" : [
                             [
                               -104.84127910390623,
                                39.820705065855044
                             ], 
                             100000
                       ]
                    }
                 }
              }
           }
       }
   }

Я создал индекс 2dsphere для пути attribute.zones.zoneLocs,но пока не повезло.Любая помощь будет принята с благодарностью.

...