在编写插入查询时,可以将uuid()写为值,以插入自动生成的uuid。
在使用像这样的JSON查询时,似乎Cassandra不允许这样做:
INSERT INTO " + tableName + " JSON '" + JSON + "'
帖子请求为:
{
"id" : "uuid()",
"name" : "Eyal"
}
这样做,上述请求将失败。
答案 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