Cassandra:如何为集合的元素设置单独的TTL(具体设置类型)

时间:2018-07-31 18:18:32

标签: cassandra datastax cql cql3 cqlsh

我们有一个场景,我们试图在Cassandra中更新数据,我们有一个更新查询来更新多个字段,其中一个字段是cassandra中的set类型(在此场景中为col1)。

更新查询如下所示

UPDATE <table_name> USING TTL 3600 SET col1=col1+{'test_30'},col2=100 , col3=400 ;

有没有一种方法可以只为col1设置TTL,即ttl应该是集合中的值“ test_30”?

基本要求是,将设置为ttl的3600秒后仅删除值“ test_30”。

datastax的cql documentation对此没有具体说明。

1 个答案:

答案 0 :(得分:0)

我看到的第一个问题是您的查询缺少WHERE子句。更新语句必须具有此子句。

运行此查询时(解决了上述问题之后),您将在列col1,col2和col3的值中为元素“ test_30”指定一个TTL。

如果您只想为“ test_30”设置TTL,则应仅使用col1(similar SO question),而不能使用col2和col3

此外,您应该注意CASSANDRA-8877。当前无法读取集合中各个值的ttl。另外,如果您运行select ttl(col1) from <table name>,则会收到错误消息Cannot use selection function ttl on collections

关于CQL update的一些其他读物。