使用cqerl更新地图数据类型的正确方法

时间:2016-11-22 20:54:52

标签: erlang cql

我很难使用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}]

任何人,任何想法?

2 个答案:

答案 0 :(得分:0)

请注意,您在值周围使用单引号,在Erlang语法中表示您正在使用atoms.根据文档cqerl,它不会在那里期望原子。 cqerl data types

例如尝试:

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

答案 1 :(得分:0)

根据贡献者在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"}]