Въпреки че не е толкова чисто, колкото просто да можете да извикате .distinct
по критерии, това решение дава очакваните резултати:
Person.find(Person.nearby(location_in_new_york, 1).distinct(:_id))
Това обаче не работи (както е написано) като обхват, така че ще трябва да го направите метод на клас. Лично аз бих разгледал възможността за добавяне на корекция към mongoid, за да добавя .unique
метод, който прави това, което искате (тъй като MongoDB е отговорен за връщането на стойности на полета вместо документи, когато използвате неговия отделен оператор:http://www.mongodb.org/display/DOCS/Aggregation
)