在 MAP 数据类型列中使用 Cassandra 用户定义类型

Using Cassandra User Defined Type in a MAP Data Type Column

能否使用 Cassandra 用户定义类型 (UDT) 作为地图数据类型列的值?

例如:

CREATE TYPE message_record( message text, update_time timestamp );

CREATE TABLE user_records( user_account int, user_record map<text, FROZEN<message_record> );

然后我想插入到 table 中,如这个(无疑是不正确的)命令所示。我尝试了各种排列,但我的编辑器 (DevCenter) 不喜欢其中任何一种。

INSERT INTO user_records (user_account, user_record) Values ( 
1234, 
[ {'0' : {message : 'message 1', update_time : '2021-06-08T18:00:05.000'}}, 
  {'1' : {message : 'message 2', update_time :'2021-06-08T18:01:05.000'}}, 
  {'2' : {message : 'message 3', update_time :'2021-06-08T18:02:05.000'}} 
];

我试图避免将我的数据标准化为不同的 table。随着时间的推移,我希望能够向地图添加其他元素。

谢谢。

您使用的语法不正确 - 在您的情况下,您试图将其作为地图列表插入,但您只需要地图。您需要按如下方式使用它:

INSERT INTO user_records (user_account, user_record) Values ( 
1234, 
{'0' : {message : 'message 1', update_time : '2021-06-08T18:00:05.000'}, 
'1' : {message : 'message 2', update_time :'2021-06-08T18:01:05.000'}, 
'2' : {message : 'message 3', update_time :'2021-06-08T18:02:05.000'}});