Back to top

    ReQL command: distinct

    Command syntax

    sequence.distinct() → array

    table.distinct([:index => <indexname>]) → stream

    r.distinct(sequence) → array

    r.distinct(table, [:index => <indexname>]) → stream

    Description

    Removes duplicate elements from a sequence.

    The distinct command can be called on any sequence or table with an index.

    While distinct can be called on a table without an index, the only effect will be to convert the table into a stream; the content of the stream will not be affected.

    Example: Which unique villains have been vanquished by Marvel heroes?

    r.table('marvel').concat_map{|hero| hero[:villain_list]}.distinct.run(conn)
    

    Example: Topics in a table of messages have a secondary index on them, and more than one message can have the same topic. What are the unique topics in the table?

    r.table('messages').distinct({:index => 'topics'}).run(conn)
    

    The above structure is functionally identical to:

    r.table('messages')['topics'].distinct().run(conn)
    

    However, the first form (passing the index as an argument to distinct) is faster, and won’t run into array limit issues since it’s returning a stream.

    Get more help

    Couldn't find what you were looking for?