使用cql3在cassandra中更新Map

wfypjpf4  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(440)

我在Cassandra有一个cf有一个库尔曼类型的Map
此cf如下所示:

CREATE TABLE word_cat ( 
   word text, 
   doc_occurrence map <text, int >,
   total_occurrence map <text, int >,   
   PRIMARY KEY (word)
);

我想更新doc\u的出现次数,以便一个键的值加上一个新的数字。
我认为在这样一个查询中:

UPDATE word_cat SET doc_occurrence ['key']=doc_occurrence ['key']+5 WHERE word='name';

但它不能工作,有人能帮忙吗?

gcmastyq

gcmastyq1#

最好用例子来解释,所以我只考虑你的模式。
现在我在这里插入一些数据,然后是输出

cqlsh:ks1> update word_cat set
           ...  doc_occurrence=
           ...  {'cassandra' : 1}
           ...  where word ='name';
cqlsh:ks1> SELECT * FROM word_cat ;

 word | doc_occurrence | total_occurrence
------+----------------+------------------
 name | {cassandra: 1} |             null

现在,如果您想覆盖Map中已经存在的键(值为5的cassandra),那么就来吧

cqlsh:ks1> update word_cat set
           ...  doc_occurrence=
           ...  {'cassandra' : 5}
           ...  where word ='name';

cqlsh:ks1> SELECT * FROM word_cat ;

 word | doc_occurrence | total_occurrence
------+----------------+------------------
 name | {cassandra: 5} |             null

更新:
您在注解中引用的功能是在Map中包含计数器值。但不幸的是,集合中不允许使用计数器,相反,我要说的是,它还不受支持。也许你可以有一个单独的计数器列家族来处理这些事情。

相关问题