docs/api/javascript/joins/outer_join.md at master · rethinkdb/docs · GitHub
Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 1.54 KB

File metadata and controls

41 lines (32 loc) · 1.54 KB
layout api-command
language JavaScript
permalink api/javascript/outer_join/
command outerJoin
io
sequence
stream
array
array
related_commands
innerJoin eqJoin zip
inner_join/
eq_join/
zip/

Command syntax

{% apibody %} sequence.outerJoin(otherSequence, predicate_function) → stream array.outerJoin(otherSequence, predicate_function) → array {% endapibody %}

Description

Returns a left outer join of two sequences. The returned sequence represents a union of the left-hand sequence and the right-hand sequence: all documents in the left-hand sequence will be returned, each matched with a document in the right-hand sequence if one satisfies the predicate condition. In most cases, you will want to follow the join with zip to combine the left and right results.

{% infobox %} Note that outerJoin is slower and much less efficient than using concatMap with getAll. You should avoid using outerJoin in commands when possible. {% endinfobox %}

Example: Return a list of all Marvel heroes, paired with any DC heroes who could beat them in a fight.

r.table('marvel').outerJoin(r.table('dc'), function(marvelRow, dcRow) {
    return marvelRow('strength').lt(dcRow('strength'))
}).run(conn, callback)

(Compare this to an innerJoin with the same inputs and predicate, which would return a list only of the matchups in which the DC hero has the higher strength.)