2017-01-05 5 views
1

Я запрашиваю многоугольник, чтобы проверить, находится ли его внутри или нет, но результаты не возвращаются. Я в Монго оболочки: (MongoDB версия оболочки: 3.2.6)

db.restPolygons.find(); 
{ 
    "_id" : ObjectId("586e663175c32828be59e3a9"), 
    "zoneCoordinates" : { 
    "type" : "Polygon", 
    "coordinates" : [ 
     [ 2, 0 ], 
     [ 6, 0 ], 
     [ 6, 2 ], 
     [ 2, 2 ], 
     [ 2, 0 ] 
    ] 
    } 
} 

db.restPolygons.find({ 
    "zoneCoordinates": { 
    "$geoIntersects": { 
     "$geometry": { 
     "type": "Point", 
     "coordinates": [3 ,1] 
     } 
    } 
    } 
}).count(); 
    0 
+0

minimongo только в клиенте метеора и не делает '$ geo' - вы в Монго оболочки на сервере. –

+0

Добавление [] к значению координат, как предложено ниже, разрешило проблему, хотя я использую ее в локальной оболочке мини-монгодба. Спасибо. –

ответ

2

Ваш многоугольник является недействительным, он отсутствует уровень ограждающих массива в coordinates поле. Это один должен работать:

> db.geo.find() 
{ 
    "_id": ObjectId("586e663175c32828be59e3a9"), 
    "zoneCoordinates": { 
     "type": "Polygon", 
     "coordinates": [ 
      [ 
       [2, 0], 
       [6, 0], 
       [6, 2], 
       [2, 2], 
       [2, 0] 
      ] 
     ] 
    } 
} 

> db.geo.find({ 
    "zoneCoordinates": { 
     "$geoIntersects": { 
     "$geometry": { 
      "type": "Point", 
      "coordinates": [3 ,1] 
     } 
     } 
    } 
    }).count() 
1 

Вы можете проверить правильность вашего объекта GeoJSON в GeoJSONList

Смежные вопросы