从地图中选择特定值

e90*_*mmy 16 cql cassandra cql3

我正在尝试创建一个20,000多列的WIDE列表

最初我以为我会用:

CREATE TABLE details (
   key TEXT,
   detail map<TEXT, TEXT>
   PRIMARY KEY (KEY)
  );
Run Code Online (Sandbox Code Playgroud)

插入此表工作正常

UPDATE details SET detail = detail + { 'col1': '12'} where key='123' ;
UPDATE details SET detail = detail + { 'col20000': 'ABCD'} where key='123' ;
Run Code Online (Sandbox Code Playgroud)

但是,我想阅读一个单独的细节:

   select detail[col1] where key='123'
Run Code Online (Sandbox Code Playgroud)

执行此查询时,我收到以下错误:

 no viable alternative at input '['
Run Code Online (Sandbox Code Playgroud)

这会起作用吗,还是我需要一种不同的方法?

jbe*_*lis 15

集合是您一次获取所有数据的小组.

如果你想更精细地访问元组,并且仍然可以询问"给定密钥的所有数据对是什么",你应该使用这样的表:

CREATE TABLE details (
  key TEXT,
  detail_key text,
  detail_value text,
  PRIMARY KEY (key, detail_key)
);
Run Code Online (Sandbox Code Playgroud)

这将允许SELECT * FROM details WHERE key = ?以及SELECT * FROM detail WHERE key = ? AND detail_key = ?.


abh*_*bhi 7

基本上cassandra尚不支持此功能.

看到这个cql3集合