Получить объект с максимальным значением поля [Mongoid] - PullRequest
6 голосов
/ 30 марта 2012

в любом случае нужно вернуть объект, а не значение из метода:

Mongoid::Contexts::Enumerable#max

Ссылка на rdoc

Простой пример: если у вас есть коллекция пользователей, и у всех них есть поле: age => могу ли я получить пользователей, которые старше с max, или я должен использовать что-то еще

1 Ответ

11 голосов
/ 30 марта 2012
one_of_oldest_users = User.desc(:age).limit(1).first

Это даст вам одного из пользователей с наибольшим возрастом (если их несколько).Если вы хотите получить их все, самый простой способ - использовать два прохода.

max_age = User.max(:age)
oldest_users = User.where(age: max_age)

# or, if you like one-liners
oldest_users = User.where(age: User.max(:age))

Чтобы сделать эти запросы эффективными, вам, конечно, понадобится индекс на :age.

...