【问题标题】:Correct way to update map data type with cqerl使用 cqerl 更新地图数据类型的正确方法
【发布时间】:2016-11-25 19:53:20
【问题描述】:

我很难掌握使用 cqerl 更新地图的语法。到目前为止我已经尝试了以下方法,但它不起作用

statement = "UPDATE keyspace SET data[?] = :data_value WHERE scope = ?;",
    values = [{data,"Key Value"},{data_value, "Data Value",{scope, "Scope Value"}]

我在这里做错了什么?

同样设置ttl也不起作用

statement = "INSERT INTO data(scope)
         VALUES(?) USING ttl ?",
    values = [{scope, "Scope Value"},{[ttl], 3650}]

任何人,有什么想法吗?

【问题讨论】:

    标签: erlang cql


    【解决方案1】:

    请注意,您在值周围使用单引号,这在 Erlang 语法中表示您使用的是 atoms. 根据文档 cqerl,它不希望存在原子。 cqerl data types

    例如试试:

    statement = "INSERT INTO data(scope)
         VALUES(?) USING ttl ?",
    values = [{scope, "Scope Value"},{[ttl], 3650}]
    

    【讨论】:

    • 感谢回复,我不是说单引号,我在上面更正了。我猜你还没有尝试运行上面的代码,它不起作用。我已经试过了。我得到这个右手值不匹配 {error,{throw,{{missing_parameter,{parameter,'[ttl]'},
    【解决方案2】:

    根据github上贡献者的回复,它需要一个原子,所以'[ttl]'是正确的方式 https://github.com/matehat/cqerl/issues/122

    更新地图的正确方法是在值部分使用原子

    statement = "UPDATE keyspace SET data[?] = ? WHERE scope = ?;",
        values = [{'key(data)',"Key Value"},{'value(data)', "Data Value",{scope, "Scope Value"}]
    

    【讨论】:

    • 您应该在此回复中添加链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2020-08-11
    相关资源
    最近更新 更多