【问题标题】:How to generate an UUID in Cassandra CQL JSON insert query如何在 Cassandra CQL JSON 插入查询中生成 UUID
【发布时间】:2015-10-29 16:39:46
【问题描述】:

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

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

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

并且发布请求为:

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

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

【问题讨论】:

    标签: json insert cassandra uuid cql


    【解决方案1】:

    我也有类似的用例,我从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"}';

    【讨论】:

      【解决方案2】:

      目前没有办法。
      您只能将值 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

      【讨论】:

        猜你喜欢
        • 2013-07-30
        • 2019-05-18
        • 1970-01-01
        • 2019-03-04
        • 2012-02-26
        • 2019-01-19
        • 2015-03-10
        • 1970-01-01
        • 2011-03-15
        相关资源
        最近更新 更多