Команда ReQL: union
Синтаксис команды
stream.union(sequence[, sequence, ...][, :interleave => true]) → stream array.union(sequence[, sequence, ...][, :interleave => true]) → array r.union(stream, sequence[, sequence, ...][, :interleave => true]) → stream r.union(array, sequence[, sequence, ...][, :interleave => true]) → array
Описание
Объединяет две или более последовательностей.
Необязательный аргумент interleave определяет, как будут объединены последовательности:
-
true: результаты смешиваются; это самый быстрый режим, но порядок элементов не гарантируется. (Это значение по умолчанию.) -
false: входные последовательности будут добавлены друг за другом, слева направо. -
"field_name": строка будет использоваться как имя поля для выполнения слияния с сортировкой. Входные последовательности должны быть отсортированы до передачи вunion. - функция: аргумент
interleaveможет принимать функцию, аргументом которой является текущая строка, а возвращаемое значение — значение для выполнения слияния с сортировкой.
Пример: Создать поток всех героев.
r.table('marvel').union(r.table('dc')).run(conn)
Пример: Объединить четыре массива в один.
r.expr([1, 2]).union([3, 4], [5, 6], [7, 8, 9]).run(conn)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Пример: Создать изменение из первого примера.
r.table('marvel').union(r.table('dc')).changes.run(conn)
Теперь при добавлении, изменении или удалении любых героев из любой таблицы будет отправлено уведомление об изменении.
Пример: Объединить таблицы героев с сортировкой по имени.
r.table('marvel').order_by('name').union(
r.table('dc').order_by('name'), :interleave => 'name'
).run(conn)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/union/