【问题标题】:Using Cassandra User Defined Type in a MAP Data Type Column在 MAP 数据类型列中使用 Cassandra 用户定义类型
【发布时间】:2025-11-30 20:45:01
【问题描述】:

您可以使用 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'}} 
];

我试图避免将我的数据规范化到不同的表中。随着时间的推移,我希望能够向地图添加其他元素。

谢谢。

【问题讨论】:

    标签: database dictionary cassandra


    【解决方案1】:

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

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

    【讨论】:

      最近更新 更多