MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Panggilan luwak ke geoNear dengan poin GeoJSON karena parameter kueri tidak berfungsi

Masalahnya salah menggunakan maxDistance. Ekspresi berikut berhasil.


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 } 
[]

Sekarang kueri dengan benar menemukan bahwa dua dokumen dalam koleksi tidak berada dalam jarak 1 meter dari lokasi yang ditanyakan. Menanyakan lokasi yang lebih dekat dengan rumah juga memberi kami hasil yang diharapkan.


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 } } ]

Solusinya?

Dokumentasi MongoDb dari geoNear menyatakan bahwa jika menggunakan objek geoJSON, maxDistance harus dalam meter, dan dalam radian jika menggunakan pasangan koordinat.

Ini salah, atau pemahaman saya salah.

Seperti yang Anda lihat di atas, daripada menentukan 1 meter untuk maxDistance, ini diberikan dalam Radian.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di mana tepatnya Pengecualian NullPointer?

  2. MongoDB $kisaran

  3. Mongodb mendapatkan kombinasi terakhir dalam kerangka agregasi

  4. Bagaimana saya bisa mengatasi masalah penskalaan dengan tanpa server dan MongoDB?

  5. Bagaimana cara memperbarui beberapa bidang objek array dengan satu permintaan?