MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB với Mongoid in Rails - Lập chỉ mục không gian địa lý

Bạn có thể xác định các chỉ mục địa lý như thế này trong mongoid

class Item
  include Mongoid::Document

  field :loc, :type => Array

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

  )
end

Và đối với các truy vấn

$ gần lệnh (không có maxDistance)

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

$ gần lệnh (với maxDistance)

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

Chuyển đổi khoảng cách bằng 111,12 (một độ là khoảng 111,12 km) khi sử dụng km hoặc giữ nguyên khoảng cách như khi sử dụng độ

$ centerSphere / $ nearSphere truy vấn

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

Điều này sẽ tìm thấy các mục trong bán kính 10 km. Ở đây chúng ta cần chuyển đổi khoảng cách / 6371 (bán kính trái đất) để làm cho nó hoạt động với km.

$ box (truy vấn hộp giới hạn)

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

Điều này sẽ giúp bạn tìm thấy các mục trong hộp giới hạn nhất định.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thêm Zeros hàng đầu trong SQL

  2. Tôi có thể sửa đổi chỉ mục hiện có trong MongoDB mà không làm rơi nó không?

  3. Làm cách nào để lấy một tài liệu nhúng cụ thể bên trong bộ sưu tập MongoDB?

  4. Tổng hợp MongoDB:Đếm các trường riêng biệt

  5. Sọc:Phải cung cấp nguồn hoặc khách hàng