sql >> Database >  >> NoSQL >> MongoDB

MongoDB met Mongoid in Rails - Geospatiale indexering

U kunt geo-indexen zoals deze definiëren in mongoïde

class Item
  include Mongoid::Document

  field :loc, :type => Array

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

  )
end

En voor vragen

$bijna commando (zonder maxDistance)

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

$bijna commando (met maxDistance)

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

Converteer afstand met 111,12 (één graad is ongeveer 111,12 kilometer) wanneer km wordt gebruikt, of laat afstand zoals deze is met graad

$centerSphere / $nearSphere vragen

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

Deze vindt de artikelen binnen de straal van 10 km. Hier moeten we de afstand/6371 (aardradius) omrekenen om het met km te laten werken.

$box (query's met selectiekader)

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

Dit zal je helpen om de items binnen het gegeven selectiekader te vinden.



  1. MongoDB $orderBy

  2. Als redis al deel uitmaakt van de stapel, waarom wordt Memcached dan nog steeds naast Redis gebruikt?

  3. database converteren van mysql naar mongoDb

  4. Resque-gebruik visualiseren met Node.js, WebSockets en Redis