cql的收藏如何包含替代价值?

6qfn3psc  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(251)

我有一个问题要问Cassandra收藏。
我想做一个与集合搜索一起工作的查询。

CREATE TABLE rd_db.test1 (
    testcol3 frozen<set<text>> PRIMARY KEY,
    testcol1 text,
    testcol2 int
)

表结构是。。。
以及

这是目录。
在这种情况下,我想让一个cql查询在set列上有可选的选项值。
如果是sql,testcol3不是集合,

select * from rd.db.test1 where testcol3 = 4 or testcol3 = 5

但它是cql和collection。。我尽力了

select * from test1 where testcol3 contains '4' OR testcol3 contains '5'  ALLOW FILTERING ;

 select * from test1 where testcol3 IN ('4','5') ALLOW FILTERING ;

但这两个查询不起作用。。。
请帮忙。。。

n1bvdmb6

n1bvdmb61#

这对您不起作用,原因有多种:
根本没有 OR cql中的操作
只能对分区键的值进行完全匹配( testcol3 )
尽管可以为集合类型的字段创建辅助索引,但不可能为分区键的值创建索引
您需要更改数据模型,但需要提前知道正在执行的查询。从简单地查看您的数据模型开始,我建议将set字段卷展到多个行中,各个字段对应于各个分区。
但我想建议在datastax学院网站上学习ds201和ds220课程,以便更好地了解cassandra是如何工作的,以及如何为它建模数据。

相关问题