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