2013-12-12 48 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 where count(rewards)>'0'; –

+1

這似乎是行計數,只有在選擇有效,而不是在哪裏。 – mmlac

回答

3

可悲的是Cassandra是急於進行非常快速的讀取和,另一方面是不是完全可以做到的支持集合: Get count of elements in Set type column in Cassandra

不幸的是,收藏支持,即使在CQL驅動v2是不是 完美:您可以添加或刪除upsert語句中的項目。但是更多關於 的信息,比如做項目選擇,詢問收集項目的TTL或詢問收集大小的 不受支持。所以,你必須

resultset: SELECT collection_column FROM ... 然後 resultset.one()resultset.all()採取項目並獲得item.size()自己。

你想要做的是添加一個帶有計數器的索引列來計數和快速讀取元素數。如果你只想知道集合是否爲空,你可能需要一個帶有布爾值的索引列。索引確保您可以高效地掃描列。

相關問題