2016-10-29 2 views
1

Я новичок в Кассандре, и я создал таблицу с замороженной коллекцией в качестве первичного ключаCassandra Select Query с помощью сбора первичного ключа в тех случаях, когда пункт

cqlsh> create table rick_morty (id uuid, name text, adventure text, instigator frozen<set<text>>, PRIMARY KEY((instigator), adventure, name, id));  

Теперь я хочу, чтобы запрос на основе первичного ключа (инициатор) для всех значений, хранящихся в коллекции. Я обнаружил, что если бы я просто хотел запросить значение 1, я могу использовать CONTAINS 'contains_value', но хочу запросить всю коллекцию.

Я искал все, чтобы выяснить, как это сделать, но я не могу найти ответ.

Делать что-то вроде

const query = 'SELECT name from rick_morty'; 

извлекает все результаты, но я хочу сделать что-то вроде ...

const query = 'SELECT name from rick_morty where instigator = ["Rick", "Morty", "Beth"]'; 

получить весь список имен, связанных с этим массивом зачинщиков.

Возможно ли это? Я просто создал свой стол ненадлежащим образом?

ответ

0

Возможно ли это?

Да. См. #8 here.

«Отфильтровать данные в столбце определенного пользователем типа. Создайте индекс, а затем запустите условный запрос. В Cassandra 2.1.x вам нужно указать все компоненты столбца имен в предложении WHERE».

Это должно работать:

SELECT name from rick_morty where instigator = { 'Rick', 'Morty', 'Beth'}; 
+1

ничего себе, я чувствую себя таким дураком! Я прочитал столько документации, но всякий раз, когда я видел «Пользовательский тип», я думал: «Нет, у меня уже установлен тип коллекции, мне не нужно знать, как это сделать!» бах! Хорошо, спасибо вам за ответ: D Я отметил его как принятый и очень ценю вашу помощь, добрый сэр !. –

0

Следующий запрос должен работать,

SELECT name from rick_morty where instigator contains 'Rick' AND contains 'Morty'; 

Но, Это не может быть эффективным/надлежащим образом реализовать, так как наборы предназначены для использования для хранения/получить набор данных для данного первичного ключа. Итак, я бы рекомендовал вам перепроектировать модель данных путем denormolise запроса в дополнительную таблицу в случае, если это требование является одним из ваших основных вариантов использования.

+0

Я думаю, что вы, вероятно, правы в этой таблице, нужно переделать, но я отметил другой ответ как принятый, поскольку он, казалось, был ближе всего к исходному вопросу. Спасибо за помощь! Послушать другие мнения по этому поводу действительно полезны для меня. –

Смежные вопросы