MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB с Mongoid в Rails – геопространствено индексиране

Можете да дефинирате географски индекси като този в mongoid

class Item
  include Mongoid::Document

  field :loc, :type => Array

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

  )
end

И за запитвания

$near команда (без maxDistance)

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

$near команда (с maxDistance)

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

Преобразувайте разстоянието по 111,12 (един градус е приблизително 111,12 километра), когато използвате км, или оставете разстоянието както е при използване на градус

$centerSphere / $nearSphere запитвания

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

Това ще намери елементите в радиус от 10 км. Тук трябва да преобразуваме разстоянието/6371 (радиус на Земята), за да го накараме да работи с km.

$box (заявки с ограничаващи кутии)

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

Това ще ви помогне да намерите елементите в рамките на даденото ограничаващо поле.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. разбират MongoDB кеш система

  2. Трябва да извлека обекта на MongoDB само с елемент от масива на filtered

  3. MongoDB $setIsSubset

  4. pymongo.errors.CursorNotFound:идентификаторът на курсора '...' не е валиден на сървъра

  5. Как да актуализирам полета на документи в mongo db с помощта на java драйвера?