MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

La query sui poligoni $geowithin $box mongodb non restituisce nulla

L'operatore $box per $geoWithin supporta solo documenti basati su coordinate della griglia e non supporta GeoJSON formato delle forme.

A seconda della struttura dei tuoi documenti e di come li stai interrogando, questo è probabilmente considerato come coordinate della griglia, ad esempio {geometry: [<long>, <lat>]} Questo potrebbe non aver funzionato per il tuo documento sui poligoni perché Poligoni GeoJSON richiedono un wrapper di array aggiuntivo. cioè [[ [<long>, <lat>] ]] invalidando il formato delle coordinate della griglia.

Se i tuoi documenti sono in formato GeoJSON e desideri selezionare un'area, puoi utilizzare $geometry invece.

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

Vale la pena notare che MongoDB Compass la visualizzazione geospaziale attualmente (v1.6) non supporta ancora GeoJSON.