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