在Cassandra CQL中,有没有办法查询集合列类型的大小?

时间:2013-12-12 22:18:44

标签: cassandra cql

我们希望能够做类似的事情。

select * from User where rewards.size > 0
架构

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

2 个答案:

答案 0 :(得分:3)

很遗憾Cassandra渴望表现得非常快速,而另一方面并不是完美地支持收藏: Get count of elements in Set type column in Cassandra

  

遗憾的是,即使在CQL Driver v2中,Collections-support也不支持   完美:您可以在upsert语句中添加或删除项目。但更多的是   他们就像做项目选择一样,要求收集项目的TTL或   询问集合的大小,不受支持。所以你必须

     

resultset: SELECT collection_column FROM ...   然后采取项目   resultset.one()resultset.all()并自己获取item.size()

您要做的是添加带有计数器的索引列以计算和快速读取元素计数。如果你只想知道集合是否为空,你可能需要一个带有布尔值的索引列。索引确保您可以有效地扫描列。

答案 1 :(得分:-1)

有一个size()方法可以做到这一点..以给出如何使用它的示例:

 select order_id,items.item_id,last_modified from person.ecommerce_order   where size(items.item_id)> 1

解释查询:

items.item_id 是一个列表字段 检查列表中是否有多个项目。