Команда ReQL: max
Синтаксис команды
sequence.max(field | function) → element
sequence.max({:index => <indexname>}) → element
r.max(sequence, field | function) → element
r.max(sequence, {:index => <indexname>}) → element
Описание
Находит максимальный элемент последовательности.
Команда max может вызываться с:
- именем поля, чтобы вернуть элемент последовательности с максимальным значением в этом поле;
- индексом (первичный ключ или вторичный индекс), чтобы вернуть элемент последовательности с максимальным значением в этом индексе;
- функцией, чтобы применить функцию к каждому элементу последовательности и вернуть элемент, который возвращает максимальное значение от функции, игнорируя любые элементы, где функция возвращает ошибку отсутствия значения.
Дополнительную информацию о порядке сортировки RethinkDB см. в разделе Типы данных ReQL.
Вызов max на пустой последовательности вызовет ошибку отсутствия значения; эту ошибку можно обработать с помощью команды default.
Пример: Вернуть максимальное значение в списке [3, 5, 7].
r([3, 5, 7]).max().run(conn)
Пример: Вернуть пользователя с наибольшим количеством очков.
r.table('users').max('points').run(conn)
Пример: То же, что и выше, но с использованием вторичного индекса по полю points.
r.table('users').max({:index => 'points'}).run(conn)
Пример: Вернуть пользователя с наибольшим количеством очков, добавив бонусные очки из отдельного поля с помощью функции.
r.table('users').max{|user| user['points'] + user['bonus_points']}.run(conn)
Пример: Вернуть наибольшее количество очков, набранных любым пользователем. Это возвращает значение поля points, а не документ.
r.table('users').max('points')['points'].run(conn)
Пример: Вернуть пользователя с наибольшим количеством очков, но добавить значение по умолчанию nil для возврата, чтобы предотвратить ошибку, если ни один пользователь не набирал очков.
r.table('users').max('points').default(nil).run(conn)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/max/