Bien que ce ne soit pas aussi propre que de pouvoir simplement appeler .distinct
sur un critère, cette solution de contournement donne les résultats attendus :
Person.find(Person.nearby(location_in_new_york, 1).distinct(:_id))
Cependant, cela ne fonctionne pas (tel qu'il est écrit) en tant que portée, vous devez donc en faire une méthode de classe. Personnellement, je chercherais à ajouter un patch à mongoid pour ajouter un .unique
méthode qui fait ce que vous voulez (puisque MongoDB est chargé de renvoyer les valeurs des champs au lieu des documents lorsque vous utilisez son opérateur distinct :http://www.mongodb.org/display/DOCS/Aggregation
)