MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB z Mongoid w Rails — indeksowanie geoprzestrzenne

Możesz zdefiniować indeksy geograficzne w ten sposób w mongoid

class Item
  include Mongoid::Document

  field :loc, :type => Array

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

  )
end

Oraz w przypadku zapytań

$blisko polecenie (bez maxDistance)

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

$blisko polecenie (z maxDistance)

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

Konwertuj odległość o 111,12 (jeden stopień to około 111,12 km) przy użyciu km lub pozostaw odległość tak, jak jest włączona, używając stopni

$centerSphere / $nearSphere zapytania

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

Spowoduje to znalezienie przedmiotów w promieniu 10 km. Tutaj musimy przekonwertować odległość/6371 (promień ziemi), aby działał z km.

Pole $ (zapytania w obwiedni)

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

Pomoże Ci to znaleźć elementy w podanym polu ograniczającym.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb - Znajdź dokument z najbliższą liczbą całkowitą

  2. Instalowanie MongoDB na CentOS 7

  3. Odległość wydruku MongoDB między dwoma punktami

  4. Obsługa błędów walidacji Mongoose – gdzie i jak?

  5. Pobierz nazwę miesiąca z daty w SQL