Команда 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.expr([3, 5, 7]).max().run(conn, callback);
Пример: Вернуть пользователя с наибольшим количеством очков.
r.table('users').max('points').run(conn, callback);
Пример: То же самое, но с использованием вторичного индекса по полю points.
r.table('users').max({index: 'points'}).run(conn, callback);
Пример: Вернуть пользователя с наибольшим количеством очков, добавив бонусные очки из отдельного поля с помощью функции.
r.table('users').max(function(user) {
return user('points').add(user('bonusPoints'));
}).run(conn, callback);
Пример: Вернуть наибольшее количество очков, набранных любым пользователем. Возвращает значение поля points, а не документ.
r.table('users').max('points')('points').run(conn, callback);
Пример: Вернуть пользователя с наибольшим количеством очков, но добавить значение по умолчанию null для возврата, чтобы предотвратить ошибку, если ни один пользователь не набрал очков.
r.table('users').max('points').default(null).run(conn, callback);
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/max/