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

Forespørgselspolygoner $geowithin $box mongodb returnerer ikke noget

$box-operatøren for $geoWithin understøtter kun dokumenter baseret på gitterkoordinater og understøtter ikke GeoJSON figurer format.

Afhængigt af din dokumentstruktur, og hvordan du forespørger på dem, behandles dette sandsynligvis som værende gitterkoordinater, dvs. {geometry: [<long>, <lat>]} Dette har muligvis ikke fungeret for dit polygondokument, fordi GeoJSON-polygoner kræver en ekstra array-indpakning. dvs. [[ [<long>, <lat>] ]] ugyldiggør gitterkoordinatformatet.

Hvis dine dokumenter er i GeoJSON-format, og du gerne vil vælge et område, kan du bruge $geometry i stedet.

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

Værd at bemærke, at MongoDB Compass geospatial visualisering i øjeblikket (v1.6) understøtter ikke GeoJSON endnu.



  1. Sådan får du mongo shell output (tre prikker) for uafsluttet kommando

  2. MongoDB, opdater samlingsfeltet, hvis den nye værdi ikke er null

  3. Hvordan kører man rå mongoDB-kommandoer ved hjælp af mongoose?

  4. Rails Redis indstilling af maxmemory og maxmemory-policy