我的 Rails 项目中有两个模型:人物和嵌入式集合,城市。还有一个关于城市的空间指数。我想找到一个城市附近的所有人。
class Person
include Mongoid::Document
include Mongoid::Timestamps
embeds_many :cities
scope :nearby, ->(location, distance) { where('cities.location' =>
{'$near' => location , '$maxDistance' => distance})}
class City
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :person
field :city
field :location, type: Array #0: latitude, 1: longitude
location_in_new_york = [40.71892, -74.00131]
我的查询是
Person.nearby(location_in_new_york, 1)
但是这样做,一个拥有两个非常接近的城市的人会被发现两次。我怎样才能避免这种行为?我不想在 ruby 中减少这个,因为我想保持我的范围。