2015-03-03 56 views
2

我的问题是,如果卡桑德拉的地图数据类型支持3种文字..例如低于在两个文字之间的映射被声明..卡桑德拉“地图”列类型,映射文字

CREATE TABLE abc(id text PRIMARY KEY, fans map<text, text>); 

我可以使用...

CREATE TABLE abc(id text PRIMARY KEY, fans map<text, text, int>); 

回答

4

除了BryceAtNetwork23的回答,您还可以创建地图一文 - 以下列方式>(文字,INT):

CREATE TABLE abc (
    id text PRIMARY KEY, 
    fans map<text,frozen<tuple<text,int>>> 
); 

然后,您可以作出这样的更新:

update abc set fans = {'a' : ('hello', 1) } where id = 'helloworld'; 

并检索像这样的数据:

cqlsh:test> select * from abc; 

    id   | fans 
------------+--------------------- 
    helloworld | {'a': ('hello', 1)} 
+1

我是如此坚持保持3个值在一起,我没有想到一个二值元组nes在地图上。这可能更接近OP的要求。辉煌! – Aaron 2015-03-03 15:34:56

+0

哇!多数民众赞成在一个辉煌的方式,thanx很多 – 2015-03-04 11:54:40

2

地图不会这样工作。相反,尝试使用TUPLE一个LIST这样的:

CREATE TABLE abc(
    id text PRIMARY KEY, 
    fans List<FROZEN<TUPLE<text, text, int>>> 
); 

请注意,您还需要使用FROZEN关键字,这是需要的元组和用户定义的类型。