Rails プロジェクトには 2 つのモデルがあります。人と埋め込みコレクションの都市です。都市には空間インデックスもあります。ある都市の近くにいるすべての人を見つけたいです。
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)
しかし、そうすると、互いに非常に近い 2 つの都市を持つ人が 2 回見つかります。この動作を回避するにはどうすればよいですか? スコープを維持したいので、これをルビーで減らしたくありません。