Back to top

    ReQL command: union

    Command syntax

    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

    Description

    Merge two or more sequences.

    The optional interleave argument controls how the sequences will be merged:

    • true: results will be mixed together; this is the fastest setting, but ordering of elements is not guaranteed. (This is the default.)
    • false: input sequences will be appended to one another, left to right.
    • "field_name": a string will be taken as the name of a field to perform a merge-sort on. The input sequences must be ordered before being passed to union.
    • function: the interleave argument can take a function whose argument is the current row, and whose return value is a value to perform a merge-sort on.

    Example: Construct a stream of all heroes.

    r.table('marvel').union(r.table('dc')).run(conn)
    

    Example: Combine four arrays into one.

    r.expr([1, 2]).union([3, 4], [5, 6], [7, 8, 9]).run(conn)
    
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    Example: Create a changefeed from the first example.

    r.table('marvel').union(r.table('dc')).changes.run(conn)
    

    Now, when any heroes are added, modified or deleted from either table, a change notification will be sent out.

    Example: Merge-sort the tables of heroes, ordered by name.

    r.table('marvel').order_by('name').union(
        r.table('dc').order_by('name'), :interleave => 'name'
    ).run(conn)
    

    Get more help

    Couldn't find what you were looking for?