MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Interroger les polygones $geowithin $box mongodb ne renvoie rien

L'opérateur $box pour $geoWithin ne prend en charge que les documents basés sur coordonnées de grille et ne prend pas en charge GeoJSON format des formes.

En fonction de la structure de vos documents et de la manière dont vous les interrogez, cela est probablement traité comme étant des coordonnées de grille, c'est-à-dire {geometry: [<long>, <lat>]} Cela n'a peut-être pas fonctionné pour votre document sur les polygones car Polygones GeoJSON nécessitent un wrapper de tableau supplémentaire. c'est-à-dire [[ [<long>, <lat>] ]] invalidant le format des coordonnées de la grille.

Si vos documents sont au format GeoJSON et que vous souhaitez sélectionner une zone, vous pouvez utiliser $geometry Au lieu.

db.places.find(
   {
     'geometry': {
       $geoWithin: {
          $geometry: {
             type : "Polygon" ,
             coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
          }
       }
     }
   }
)

À noter que MongoDB Compass la visualisation géospatiale actuellement (v1.6) ne prend pas encore en charge GeoJSON.