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

Correct way to update map data type with cqerl

我很难理解使用 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 语法中表示您使用的是 atoms. Based on the documentation cqerl, it doesn't expect atoms there. cqerl data types

例如尝试:

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

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

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

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