如何从CQL表的JSON列中选择键作为列?

时间:2019-04-26 16:43:12

标签: json cassandra cql

我已经在CQL中创建了下表:

CREATE TABLE new_table ( idRestaurant INT, restaurant map<text,varchar>, InspectionDate date, ViolationCode VARCHAR, ViolationDescription VARCHAR, CriticalFlag VARCHAR, Score INT, GRADE VARCHAR, PRIMARY KEY (InspectionDate )) ;

然后,我通过jar插入了数据,得到的restaurant column值类似于json/dictionary

select restarutant from new_table;类似于以下结果: enter image description here

在用于选择json列的键值的常规SQL中,应该为select json_col.key from table,但这不适用于CQL,如何选择JSON的键值作为列或WHERE条件过滤?

非常感谢您

1 个答案:

答案 0 :(得分:0)

代替使用map,我最好将表的架构更改为以下形式:

CREATE TABLE new_table (
  idRestaurant INT, 
  restaurant_key text,
  restaurant_value text,
  InspectionDate date, 
  ViolationCode VARCHAR,
  ViolationDescription VARCHAR, 
  CriticalFlag VARCHAR, 
  Score INT, 
  GRADE VARCHAR, 
  PRIMARY KEY (InspectionDate, restaurant_key )) ;

然后,您可以根据restaurant_key选择带有查询的任一行:

select * from new_table where idRestaurant = ? and restaurant_key = ?

或通过以下方式选择餐厅的所有内容:

select * from new_table where idRestaurant = ?