Spec-Zone.ru › RethinkDB ruby

Команда 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').concat_map{|hero| hero[:villain_list]}.distinct.run(conn)

Пример: Тематика в таблице сообщений имеет вторичный индекс, и несколько сообщений могут иметь одинаковую тему. Какие уникальные темы в таблице?

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

Вышеприведённая структура функционально идентична:

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

Однако, первый вариант (передача индекса как аргумента к distinct) быстрее и не столкнётся с проблемами ограничения массива, так как он возвращает поток.

Связанные команды

  • map
  • concat_map
  • group

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/distinct/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API