举例:
create table test( a int, b list<text>, c set<text>, d map<text,text>, primary key(a) );
插入使用下面的形式
insert into test(a,b,c,d) values(1,[‘listtext1′,’listtext2’],{‘settext1′,’settext2’},{‘mapkey1′:’mapvale2′,’mapkey2′:’mapvalue2’});
第一: list类型
增加元素:
update test set b=b+[‘listtext3′,’listext4’] where a=1;
删除第i个元素:
你可以使用
delete b[i] from test where a=1;
或者 update test set b[i]=null where a=1;
注:后者的方法是可行的,不过官方文档没有说明
删除内容为listtext1和listtext2的元素
update test set b = b-[‘listtext1′,’listtext2’] where a=1;
第二: Set类型
增加元素
update test set c=c+{‘settext3′,’settext4’} where a=1;
删除元素
update test set c=c-{‘settext1′,’settext2’} where a=1;
第三:Map类型
增加元素
update test set d[‘mapkey3′] =’mapvalue3’ where a=1;
或者 update test set d=d+{‘mapkey3′:’mapvalue3′,’mapkey4′:’mapvalue4’} where
a=1;
注:后者的方法是可行的,不过官方文档没有说明
删除元素
delete d[‘mapkey3’] from test where a=1;
或者 update test set d[‘mapkey3’]=null where a=1;
注:后者的方法是可行的,不过官方文档没有说明
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/177.html
请问,如果我想查找所有满足d[‘mapkey1′] = ’mapvale2′ 的a,要怎么实现呢?
使用SELECT a FROM test WHERE d[‘mapkey1′] = ’mapvale2′;会报错:no viable alternative at input ‘[‘
cassandra中集合类型不能做主键,不能建索引,所以很遗憾集合类型不能作为查询条件。
感谢您那么快回复我~~还想请问一下,如果我有多个动态属性,就好比这个集合类型中的数据,而且每一个数据都会经常作为搜索该行的条件,那么用什么数据库或者什么存储方式实现比较好呢?
cassandra的查询比较弱,你这种mongodb可能会更好一些吧。
了解了,多谢大牛指教~~~