Команда ReQL: innerJoin
Синтаксис команды
sequence.innerJoin(otherSequence, predicate_function) → stream array.innerJoin(otherSequence, predicate_function) → array
Описание
Возвращает внутреннее соединение двух последовательностей.
Возвращаемая последовательность представляет собой пересечение левой и правой последовательностей: каждая строка левой последовательности сравнивается с каждой строкой правой последовательности, чтобы найти все пары строк, которые удовлетворяют предикату. Каждая соответствующая пара строк обеих последовательностей объединяется в строку результата. В большинстве случаев вам необходимо выполнить операцию соединения с zip для объединения левого и правого результатов.
Обратите внимание, что
innerJoinмедленнее и менее эффективен, чем использование eqJoin или concatMap с getAll. Следует избегать использованияinnerJoinв командах, когда это возможно.
Пример: Возвратить список всех противостояний между героями Marvel и DC, в которых герой DC может победить героя Marvel в схватке.
r.table('marvel').innerJoin(r.table('dc'), function(marvelRow, dcRow) {
return marvelRow('strength').lt(dcRow('strength'))
}).zip().run(conn, callback)
(Сравните это с outerJoin с теми же входными данными и предикатом, который вернёт список всех героев Marvel вместе с любыми героями DC, обладающими большей силой.)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/inner_join/