在cassandra中,假设我们需要访问Map类型列的键级别。怎么做?
创建语句:
create table collection_tab2(
empid int,
emploc map<text,text>,
primary key(empid));
插入语句:
insert into collection_tab2 (empid, emploc ) VALUES ( 100,{'CHE':'Tata Consultancy Services','CBE':'CTS','USA':'Genpact LLC'} );
选择:
select emploc from collection_tab2;
empid | emploc
------+--------------------------------------------------------------------------
100 | {'CBE': 'CTS', 'CHE': 'Tata Consultancy Services', 'USA': 'Genpact LLC'}
在这种情况下,如果您想单独访问“usa”键。我该怎么办?
我根据索引试过了。但所有的价值观都在到来。
CREATE INDEX fetch_index ON killrvideo.collection_tab2 (keys(emploc));
select * from collection_tab2 where emploc CONTAINS KEY 'CBE';
empid | emploc
------+--------------------------------------------------------------------------
100 | {'CBE': 'CTS', 'CHE': 'Tata Consultancy Services', 'USA': 'Genpact LLC'}
但预期:
'CHE': 'Tata Consultancy Services'
1条答案
按热度按时间iezvtpos1#
作为数据模型更改,我强烈建议:
然后您可以简单地进行查询和分页,因为emplocu键是集群键,而不是cql集合的一部分,cql集合具有多个限制和负面性能影响。
然后:
也可以将它放在一个未标记的批处理中,它仍将被有效地原子化地应用,因为它们都在同一个分区中。
要做到这一点,你可以在4.0后与Cassandra-7396与
[]
选择器如下:但我仍然强烈建议更改数据模型,因为它的效率要高得多,并且可以在现有版本中使用: