Spec-Zone.ru › RethinkDB java

Команда ReQL: reduce

Синтаксис команды

sequence.reduce(function) → value
r.reduce(sequence, function) → value

Описание

Производит одно значение из последовательности путём многократного применения функции сокращения.

Функция сокращения может быть вызвана для:

  • двух элементов последовательности
  • одного элемента последовательности и одного результата предыдущего сокращения
  • двух результатов предыдущих сокращений

Функция сокращения может быть вызвана для результатов двух предыдущих сокращений, потому что команда reduce распределена и распараллелена по фрагментам и ядрам процессора. Распространённая ошибка при использовании команды reduce заключается в предположении, что сокращение выполняется слева направо. Прочитайте статью map-reduce в RethinkDB, чтобы увидеть пример.

Если последовательность пуста, сервер произведёт ReqlRuntimeError, который можно перехватить с помощью default_. Если последовательность содержит только один элемент, будет возвращён первый элемент.

Пример: Возвращает количество документов в таблице posts.

r.table("posts").map(doc -> 1).reduce(
    (left, right) -> left.add(right)
).default_(0).run(conn);

Более короткий способ выполнения этого запроса — использование count.

Пример: Предположим, что каждый post имеет поле comments, которое является массивом комментариев.
Возвращает количество комментариев для всех записей.

r.table("posts").map(doc -> doc.g("comments").count()).reduce(
    (left, right) -> left.add(right)
).default_(0).run(conn);

Пример: Предположим, что каждый post имеет поле comments, которое является массивом комментариев.
Возвращает максимальное количество комментариев на запись.

r.table("posts").map(doc -> doc.g("comments").count()).reduce(
    (left, right) -> r.branch(left.gt(right), left, right)
).default_(0).run(conn);

Более короткий способ выполнения этого запроса — использование max.

Связанные команды

  • group
  • map
  • concat_map
  • sum
  • avg
  • min
  • max

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/reduce/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API