Команда ReQL: distinct
Синтаксис команды
sequence.distinct() → array
table.distinct([{index: <indexname>}]) → stream
r.distinct(sequence) → array
r.distinct(table, [{index: <indexname>}]) → stream
Описание
Удаляет дубликаты элементов в последовательности.
Команда distinct может быть вызвана для любой последовательности или таблицы с индексом.
Хотя
distinctможет быть вызвана для таблицы без индекса, единственным эффектом будет преобразование таблицы в поток; содержимое потока не изменится.
Пример: Какие уникальные злодеи были побеждены героями Marvel?
r.table('marvel').concatMap(function(hero) {
return hero('villainList')
}).distinct().run(conn, callback)
Пример: Темы в таблице сообщений имеют вторичный индекс, и более чем одно сообщение может иметь одну и ту же тему. Какие уникальные темы находятся в таблице?
r.table('messages').distinct({index: 'topics'}).run(conn, callback)
Данная структура функционально идентична:
r.table('messages')('topics').distinct().run(conn, callback)
Однако, первый вариант (передача индекса в качестве аргумента к distinct) быстрее и не столкнётся с проблемами ограничения массива, так как возвращает поток.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/distinct/