我是Cassandra的新手,我创建了一个以冷冻集合为主键的表
cqlsh> create table rick_morty (id uuid, name text, adventure text, instigator frozen<set<text>>, PRIMARY KEY((instigator), adventure, name, id));
现在我想基于主键(发起者)查询集合中保存的所有值 . 我发现如果我只想查询1个值,我可以使用CONTAINS'contact_value',但我想查询整个集合 .
我一直在寻找如何做到这一点,但我找不到答案 .
做点什么
const query = 'SELECT name from rick_morty';
检索所有结果,但我想做...
const query = 'SELECT name from rick_morty where instigator = ["Rick", "Morty", "Beth"]';
检索与该煽动者数组相关联的所有名称列表 .
这可能吗??我是以不正当的方式创建我的 table 吗?
2 回答
是 . 见#8 here .
“过滤用户定义类型的列上的数据 . 创建索引然后运行条件查询 . 在Cassandra 2.1.x中,您需要在WHERE子句中列出name列的所有组件 . ”
这应该工作:
以下查询应该有效,
但是,这可能不是一种有效/正确的实现方式,因为集合旨在用于存储/获取给定主键的一组数据 . 因此,如果此要求是您的主要用例之一,我建议您通过将查询denormolise到另一个表中来重新设计数据模型 .