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

MongoDB dengan Mongoid di Rel - Pengindeksan Geospasial

Anda dapat menentukan indeks geografis seperti ini di mongoid

class Item
  include Mongoid::Document

  field :loc, :type => Array

  index(
      [
          [:loc, Mongo::GEO2D]             
      ], background: true

  )
end

Dan untuk pertanyaan

$dekat perintah (tanpa maxDistance)

 location = [80.24958300000003, 13.060422]
 items = Item.where(:loc => {"$near" => location})

$dekat perintah (dengan maxDistance)

 distance = 10 #km
 location = [80.24958300000003, 13.060422]
 items = Item.where(:loc => {"$near" => location , '$maxDistance' => distance.fdiv(111.12)})

Ubah jarak dengan 111,12 (satu derajat kira-kira 111,12 kilometer) saat menggunakan km, atau biarkan jarak seperti saat menggunakan derajat

$centerSphere / $nearSphere kueri

location = [80.24958300000003, 13.060422]
items = Item.where(:loc => {"$within" => {"$centerSphere" => [location, (distance.fdiv(6371) )]}})

Ini akan menemukan item dalam radius 10 km. Di sini kita perlu mengonversi jarak/6371(jari-jari bumi) untuk membuatnya bekerja dengan km.

$kotak (kueri kotak pembatas)

 first_loc = [80.24958300000003, 13.060422]
 second_loc = [81.24958300000003, 12.060422]
 items = Item.where(:loc => {"$within" => {"$box" => [first_loc, second_loc]}})

Ini akan membantu Anda menemukan item di dalam kotak pembatas yang diberikan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mereferensikan skema lain dalam skema Mongoose saya?

  2. Cara mengaktifkan kueri MongoDB mentah langsung di Ruby

  3. MongoDB $pow

  4. Gambaran Umum MongoDB dan Load Balancing

  5. kueri luwak/mongodb beberapa jenis