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

mongodb menyaring dokumen dengan garis bujur, garis lintang dan dengan jarak tertentu

Sebelum memulai saya akan menambahkan dua poin-

  1. Saat menggunakan mongo, selalu sisipkan lokasi dengan cara [long., lat.]
  2. Harap tentukan jenis geometri yang Anda masukkan. Lihat mongoDB dokumentasi untuk info lebih lanjut tentang jenis.

Datang ke permintaan Anda, saya menambahkan tiga poin sebagai pertanyaan Anda dan data saya terlihat seperti di bawah ini-

> db.test.find()
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ] }
{ "_id" : "Majestic", "type" : "Point", "loc" : [ 77.5712, 12.9766 ] }
{ "_id" : "ShanthiNgr", "type" : "Point", "loc" : [ 77.6836, 12.8486 ] }

Saya telah memberikan tipe:"Titik" karena ini adalah kunci yang dicadangkan untuk menggunakan lokasi tipe bola di mongo. Selain itu saya telah menambahkan [panjang, lat] untuk lokasi. Kemudian saya menambahkan indeks 2dSphere di bidang loc.

db.test.createIndex({loc:"2dsphere"})

Kemudian saya mengeksekusi query di bawah ini untuk mengetahui jarak dari Marathahalli [77.6974,12.9591]-

> db.test.aggregate([ {$geoNear: { near :{type: "Point", coordinates:[77.6974,12
.9591]}, distanceField: "distance", spherical: true } } ])
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ], "distance": 9583.305405402776 }
{ "_id" : "ShanthiNgr", "type" : "Point", "loc" : [ 77.6836, 12.8486 ], "distance" : 12391.53898270671 }
{ "_id" : "Majestic", "type" : "Point", "loc" : [ 77.5712, 12.9766 ], "distance": 13828.057829128267 }

Permintaan di atas hanya untuk tujuan pengujian untuk mengetahui jarak. Ini memberitahu jarak dalam meter sehingga saya dapat dengan mudah mengubahnya menjadi km.

Sekarang saya menjalankan kueri di bawah ini untuk menemukan lokasi dari Marathahalli dalam jarak 10 km. jarak dan saya mendapatkan hasil yang saya inginkan-

> db.test.find({ loc:{ $near:{ $geometry: {type: "Point" , coordinates:[77.6974,12.9591] }, $maxDistance:10000 }}})
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ] }

Saya menemukan beberapa masalah dengan pendekatan yang Anda coba-

  • Lokasi harus diberikan dengan cara [long, lat].
  • type:"Titik" harus diberikan untuk menggunakan lokasi tipe titik. Ini adalah kata kunci yang dicadangkan.
  • Jarak akan diambil dalam meter di sini. Di beberapa tempat diambil dalam radian juga di Mongo. Silakan lihat ini mongoDB doc untuk info lebih lanjut tentang jarak radian.

Semoga bisa membantu... selamat siang... :)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb $graphLookup membangun hierarki

  2. Hal-Hal Utama yang Harus Dipantau di MongoDB

  3. Bagaimana cara - beberapa aplikasi Meteor di MongoDB tunggal - koleksi yang sama?

  4. batas jumlah koleksi dalam database

  5. Masalah instalasi driver MongoDb PHP di wamp