У меня две модели, Location
и Event
.
class Event
include Mongoid::Document
field :name, type: String
belongs_to :location
index({'location.coordinates' => '2d'}, {unique: true}) # I added this later on because I had an error when querying on location.coordinates
end
class Location
include Mongoid::Document
field :coordinates, type: Array
index({coordinates: '2d'}, {unique: true})
has_many :events
end
Теперь, если я создам Event
со связанным местоположением
Location.create({coordinates: [40.7127837, -74.0059413]})
Event.create({name: "foo", location: Location.first})
Как я могу запросить события рядом с определенным местом? Я пробовал это:
Event.where('location.coordinates' => {'$near' => [40.7127837, -74.0059413], '$maxDistance' => 1000.fdiv(111.12)}).first
но он не возвращает никаких результатов, а
Location.where('coordinates' => {'$near' => [40.7127837, -74.0059413], '$maxDistance' => 1000.fdiv(111.12)}).first
возвращает объект Location
, созданный ранее.
Что я делаю неправильно?
includes
, но безрезультатно. 10.12.2015