2015-03-03 86 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關鍵字,這是需要的元組和用戶定義的類型。