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