搜索元组集合 - 卡桑德拉

时间:2017-07-11 06:59:01

标签: cassandra spring-data-cassandra

  

这是我的数据: -

CREATE TABLE collect_things(k int PRIMARY KEY,n set<frozen<tuple<text, text>>>);

INSERT INTO collect_things (k, n) VALUES(1, {('hello', 'cassandra')});

CREATE INDEX n_index  ON collect_things  (n);
  

现在我必须这样查询: -

SELECT * FROM collect_things WHERE n contains ('cassandra')  ALLOW FILTERING ;
  

输出: -

 k | n
---+---------
  

预期产出: -

k | n
---+---------
 1 | {('hello', 'cassandra')}

我想用&#c; cassandra&#39;来获取我的数据。价值。这可能吗 ?

1 个答案:

答案 0 :(得分:1)

Collection里面的元组必须定义为冻结。

  

冻结值将多个组件序列化为单个值。非冻结类型允许更新单个字段。 Cassandra将冻结类型的值视为blob。必须覆盖整个值。

您必须将冻结视为单个值,并且不能将它们分开。因此,在查询时提供完整的冻结元组('hello', 'cassandra')

SELECT * FROM collect_things WHERE n CONTAINS ('hello', 'cassandra');

如果您有数据:

 k | n
---+---------------------------------------------
 1 | {('hello', 'cassandra'), ('test', 'seach')}
 2 |                         {('test', 'seach')}

输出:

 k | n
---+---------------------------------------------
 1 | {('hello', 'cassandra'), ('test', 'seach')}

来源:https://docs.datastax.com/en/cql/3.1/cql/cql_reference/collection_type_r.html

相关问题