2013-12-12 4 views
5

Мы ищем, чтобы быть в состоянии сделать что-то вроде ..В Cassandra CQL существует ли способ запроса размера столбца коллекции?

select * from User where rewards.size > 0 

, когда схема является

create table user (
    id uuid primary key, 
    network_id uuid, 
    rewards set<uuid>, 
    name text 
); 
+0

Попробуйте это. select * from User, где count (вознаграждения)> '0'; –

+1

Кажется, что это число строк и действителен только в select, а не в каком-либо месте. – mmlac

ответ

3

к сожалению Кассандра стремится выполнять очень быстро читает, а с другой стороны, не совсем сделано вспомогательные коллекции: Get count of elements in Set type column in Cassandra

, к сожалению, коллекция-поддержка даже в CQL Driver v2 не отлично: вы можете добавлять или удалять элементы в выражениях upsert. Но больше на им, как и делать выбор элемента, запрашивая TTL-элементы коллекции, или , запрашивая размер коллекции, не поддерживается. Таким образом, вы должны

resultset: SELECT collection_column FROM ... , а затем взять деталь resultset.one() или resultset.all() и получить item.size() себя.

Что вы хотите сделать, это добавить индексный столбец со счетчиком для подсчета и быстрого чтения счетчика элементов. Iff вы просто хотите знать, не является ли коллекция пустой, вам может понадобиться индексный столбец с булевым. Индекс гарантирует, что вы сможете эффективно сканировать столбцы.

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