आप भू-अनुक्रमणिका को इस तरह से मोंगोइड में परिभाषित कर सकते हैं
class Item
include Mongoid::Document
field :loc, :type => Array
index(
[
[:loc, Mongo::GEO2D]
], background: true
)
end
और प्रश्नों के लिए
$निकट कमांड (बिना मैक्सडिस्टेंस के)
location = [80.24958300000003, 13.060422]
items = Item.where(:loc => {"$near" => location})
$निकट कमांड (मैक्सडिस्टेंस के साथ)
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 (पृथ्वी त्रिज्या) को परिवर्तित करने की आवश्यकता है।
$बॉक्स (बाउंडिंग बॉक्स क्वेरीज़)
first_loc = [80.24958300000003, 13.060422]
second_loc = [81.24958300000003, 12.060422]
items = Item.where(:loc => {"$within" => {"$box" => [first_loc, second_loc]}})
यह आपको दिए गए बाउंडिंग बॉक्स में आइटम खोजने में मदद करेगा।