如何在Cassandra CQL JSON插入查询中生成UUID

时间:2015-10-29 16:39:47

标签: json insert cassandra uuid cql

在编写插入查询时,可以将uuid()写为值,以插入自动生成的uuid。

在使用像这样的JSON查询时,似乎Cassandra不允许这样做:

INSERT INTO " + tableName + " JSON '" + JSON + "'

帖子请求为:

{
    "id" : "uuid()",
    "name" : "Eyal"
}

这样做,上述请求将失败。

2 个答案:

答案 0 :(得分:0)

我也有同样的用例,我从https://www.datastax.com/dev/blog/whats-new-in-cassandra-2-2-json-support网站获得以下信息。我希望,它会帮助你。

类型解读

当Cassandra类型具有合理的原生JSON等效项时,例如整数,浮点数,布尔值和列表,则接受这些本机类型。对于没有明确的JSON等效项的Cassandra类型,例如UUID,应该使用与普通CQL文字格式匹配的字符串表示。

例如,在CQL中,您可以使用如下文字表示UUID:

INSERT INTO uuid_map(id,theuuid)VALUES(10,994FF312-111E-11E5-9FDE-E0B9A54A6D93);

使用INSERT JSON时,您应该使用具有相同格式的字符串来表示UUID:

INSERT INTO uuid_map JSON'{“id”:10,“theuuid”:“994FF312-111E-11E5-9FDE-E0B9A54A6D93”}';

答案 1 :(得分:0)

目前没有办法。
您只能将值uuui放在引号中的字符串格式中。
您可以创建一个单独的生成器来创建要插入的json,但是即使运行toJson(uuid()),也无法调用uuid()函数。

因此,唯一的种类是:

Insert into name_table (a, uuid) values ("someText", uuid());
Insert into name_table JSON'{"a":"someText" , "uuid" : "4uuid_format");

在文档中,您可以找到所有详细信息:
http://cassandra.apache.org/doc/latest/cql/json.html