обновление карты в cassandra с помощью cql3

у меня есть CF в cassandra, у которого есть карта типа столбца

этот CF выглядит следующим образом:

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

Я хочу обновить doc_occurrence, чтобы значение ключа было добавлено новым числом. Я хочу сделать это в одном запросе.

я думаю, что это можно сделать в таком запросе:

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

но это не сработало, может ли кто-нибудь помочь?


person zsh    schedule 21.05.2013    source источник


Ответы (1)


Лучше объяснить на примере, поэтому рассматриваю только вашу схему.

Теперь я вставляю некоторые данные, а затем вывод

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

Теперь, если вы хотите перезаписать уже существующий ключ (cassandra со значением 5) на своей карте, так что вперед

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

Обновление:

Функциональность, о которой вы говорите в своем комментарии, включает в себя значение счетчика на карте. Но, к сожалению, счетчики не разрешены внутри коллекции, скорее, я скажу, что они еще не поддерживаются. Может быть, у вас может быть отдельное семейство столбцов счетчиков для обработки этих вещей.

person abhi    schedule 21.05.2013
comment
нет, я хочу добавить значение существующего ключа к новому значению. в этом примере значение cassandra становится 1+5=6 {cassandra:6} - person zsh; 21.05.2013