sql >> Databasteknik >  >> NoSQL >> MongoDB

Fråga polygoner $geowithin $box mongodb returnerar ingenting

$box-operatören för $geoWithin stöder endast dokument baserade på rutnätskoordinater och stöder inte GeoJSON former format.

Beroende på din dokumentstruktur och hur du frågar efter dem, behandlas detta förmodligen som rutnätskoordinater, dvs. {geometry: [<long>, <lat>]} Detta kanske inte fungerade för ditt polygondokument eftersom GeoJSON-polygoner kräver ett extra array-omslag. dvs [[ [<long>, <lat>] ]] ogiltigförklarar rutnätskoordinatformatet.

Om dina dokument är i GeoJSON-format och du vill välja ett område kan du använda $geometry istället.

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

Värt att notera att MongoDB Compass geospatial visualisering för närvarande (v1.6) stöder inte GeoJSON ännu.



  1. MongoDB bind_ip fel:bind() misslyckades errnr:99 Kan inte tilldela begärd adress för socket

  2. MongoDB:Hur uppdaterar jag ett enstaka delelement i en array, refererat till av indexet i arrayen?

  3. MongoDB insertOne()

  4. Finns det ett upsert-alternativ i mongodb insert-kommandot?