【问题标题】:cassandra “map” column type, mapping literalscassandra “map” 列类型,映射文字
【发布时间】:2015-05-04 03:28:27
【问题描述】:

我的问题是,如果 Cassandra 的映射数据类型支持 3 种文字.. 在下面的示例中,声明了两个文字之间的映射..

CREATE TABLE abc(id text PRIMARY KEY, fans map<text, text>);

我可以使用...

CREATE TABLE abc(id text PRIMARY KEY, fans map<text, text, int>);

【问题讨论】:

    标签: dictionary cassandra


    【解决方案1】:

    地图不会那样工作。相反,请尝试使用 TUPLE 的列表,如下所示:

    CREATE TABLE abc(
      id text PRIMARY KEY,
      fans List<FROZEN<TUPLE<text, text, int>>>
    );
    

    请注意,您还需要使用 FROZEN 关键字,这是元组和用户定义类型所必需的。

    【讨论】:

      【解决方案2】:

      除了 BryceAtNetwork23 的回答,还可以通过以下方式创建 text -> (text, int) 的映射:

      CREATE TABLE abc (
        id text PRIMARY KEY,
        fans map<text,frozen<tuple<text,int>>>
      );
      

      然后您可以进行如下更新:

      update abc set fans = {'a' : ('hello', 1) } where id = 'helloworld';
      

      并检索如下数据:

      cqlsh:test> select * from abc;
      
        id         | fans
       ------------+---------------------
        helloworld | {'a': ('hello', 1)}
      

      【讨论】:

      • 我一直坚持将 3 个值放在一起,以至于我没有想到嵌​​套在地图中的二值元组。这可能更接近 OP 想要的。太棒了!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2016-10-02
      • 2020-12-21
      • 2018-07-29
      • 2015-05-29
      • 2011-06-08
      相关资源
      最近更新 更多