cassandra “map” 列类型,映射字面量

cassandra “map” column type, mapping literals

我的问题是,如果 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>);

地图不会那样工作。相反,尝试像这样使用 TUPLE 的 LIST:

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

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

除了BryceAtNetwork23的回答之外,您还可以通过以下方式创建文本-> (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)}