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

Mongoose kalder til geoNear med GeoJSON-punkter, da forespørgselsparametre ikke virker

Problemet var forkert ved brug af maxDistance. Følgende udtryk virkede.


Branch.geoNear({type: "Point", coordinates: [0.0776590, -33.7797590]}, {
  spherical: true, 
  maxDistance: 1 / 6378137, 
  distanceMultiplier: 6378137
})
  .then(function (doc) {
    console.log(doc);
    process.exit();
  });


Mongoose: branches.ensureIndex({ location: '2dsphere' }) { safe: undefined, background: true }  
Mongoose: branches.geoNear(0.077659) -33.779759 { distanceMultiplier: 6378137, lean: true, maxDistance: 1.567855942887398e-7, spherical: true } 
[]

Nu opdager forespørgslen korrekt, at de to dokumenter i samlingen ikke er inden for 1 meter fra det forespurgte sted. At forespørge efter en placering tættere på hjemmet giver os også de forventede resultater.


Branch.geoNear({type: "Point", coordinates: [153.027117, -27.468515]}, {
  spherical: true, 
  maxDistance: 1 / 6378137, 
  distanceMultiplier: 6378137
})
  .then(function (doc) {
    console.log(doc);
    process.exit();
  });

Mongoose: branches.ensureIndex({ location: '2dsphere' }) { safe: undefined, background: true }  
Mongoose: branches.geoNear(153.027117) -27.468515 { distanceMultiplier: 6378137, lean: true, maxDistance: 1.567855942887398e-7, spherical: true } 
[ { dis: 0.0026823704060803567,
    obj: 
     { name: 'A',
       _id: 533200e49ba06bec37c0cc22,
       location: [Object],
       __v: 0 } } ]

Løsningen?

MongoDb-dokumentation af geoNear angiver, at hvis man bruger et geoJSON-objekt, skal maxDistance være i meter, og i radianer, hvis man bruger koordinatpar.

Dette er enten forkert, eller også er min forståelse af det forkert.

Som du kan se ovenfor, i stedet for at angive 1 meter for maxDistance, leveres den i radianer.



  1. Den hurtigste MongoDB på Azure!

  2. I NodeJS, hvordan udlæses resultater fra mongodb med forskellige feltnavne?

  3. Mongo:netværksfejl under forsøg på at køre kommandoen 'whatsmyuri' på værten

  4. Kollisionssandsynlighed for ObjectId vs UUID i et stort distribueret system