Cql 的集合如何包含替代值?
how Cql's Collection contains alternative value?
我有一个问题要查询 cassandra 集合。
我想使用集合搜索进行查询。
CREATE TABLE rd_db.test1 (
testcol3 frozen<set<text>> PRIMARY KEY,
testcol1 text,
testcol2 int
)
table结构是这样的...
和
这是table内容。
在这种情况下,我想使 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 ;
但这两个查询没有用...
请帮忙...
由于多种原因,这对您不起作用:
- CQL
中没有OR
操作
- 您只能对分区键 (
testcol3
) 的值进行完全匹配
- 尽管您可以create secondary indexes for fields with collection type,但不可能为分区键的值创建索引
您需要更改数据模型,但您需要提前知道您正在执行的查询。通过简要查看您的数据模型,我建议将 set 字段展开为多行,各个字段对应各个分区。
但我想建议学习 DS201 和 DS220 courses on DataStax Academy site 以更好地理解 Cassandra 的工作原理以及如何为其建模数据。
我有一个问题要查询 cassandra 集合。
我想使用集合搜索进行查询。
CREATE TABLE rd_db.test1 (
testcol3 frozen<set<text>> PRIMARY KEY,
testcol1 text,
testcol2 int
)
table结构是这样的...
和
这是table内容。
在这种情况下,我想使 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 ;
但这两个查询没有用...
请帮忙...
由于多种原因,这对您不起作用:
- CQL 中没有
- 您只能对分区键 (
testcol3
) 的值进行完全匹配 - 尽管您可以create secondary indexes for fields with collection type,但不可能为分区键的值创建索引
OR
操作
您需要更改数据模型,但您需要提前知道您正在执行的查询。通过简要查看您的数据模型,我建议将 set 字段展开为多行,各个字段对应各个分区。
但我想建议学习 DS201 和 DS220 courses on DataStax Academy site 以更好地理解 Cassandra 的工作原理以及如何为其建模数据。