2016-11-22 3 views
2

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}] 

誰でも、どんな考えを動作しませんか?

答えて

0

を、それが原子を取るので、「[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"}] 
+0

あなたはこの返信にリンクを追加する必要がありますこれは一致しません。 –

1

Erlangの構文で使用している値を一重引用符で囲んでいることに注意してください。atoms.ドキュメントcqerlに基づいて、そこにはアトムが存在しません。例えばcqerl data types

は試してみてください。githubの上の貢献者からの回答をもとに

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

私は一重引用符を意味しませんでした。私は上記のコードを実行しようとしていないと思う、それは動作しません。私はすでにこれを試しました。私は右の値{エラー、{スロー、{{missing_parameter、{パラメータ、 '[ttl]'} – user3404572

関連する問題