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



是否可以使用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> );

然后,我想插入到表中,如这个(毫无疑问是不正确的(命令所示。我试过各种各样的排列,但我的编辑(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'}} 
];

我试图避免将数据标准化为不同的表。随着时间的推移,我希望能够在地图上添加额外的元素。

谢谢。

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

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'}});

最新更新