現在、ArangoDBが今後の代替案になるかどうかを評価中です。今回の評価の一環として、現在のNoSQL dbとArangoDBを話すコードを交渉するコードを移植しています。これまでのところかなりスムーズな乗り心地でしたが、サブ文書を更新する方法を頭に入れておくのは驚くほど困難でした。私はアトミックnum_sold
を高めるために、今、それを達成したいと思い何ArangoDBサブ文書の更新
{
"_key": "12345",
"subdoc": {
"0": {
"num_sold": 6,
"other_attribute": "important"
},
"1": {
"num_sold": 4,
"other_attribute": "important"
}
}
}
:私たちはこのような何かを持っていると仮定すると。
非常に最初の単純なアプローチは次のように何かをしようとすることはもちろんでした:
FOR d in @@collection
FILTER d._key == "12345"
UPDATE d WITH { subdoc.0.num_sold : subdoc.0.num_sold + 1 } IN @@collection
RETURN d
を(そこにコピーペースター用スポイラー警告:上に移動このコードは、ちょうどあなたの人生を惨めになります。)
これは明らかにうまくいかず、複数の理由が考えられます。 Arangoは私がドット表記法を使って属性を参照するのが好きではないようです。数字( "0")で始まる属性も問題なのかもしれません。hereの例を見つけている間、私は少し複雑で、やろうとしている。私がやりたいことに近いもう一つのディスカッションhereもあります。しかし、この議論で提案されている解決策は、私のケースでエラーを生成するキーワードOLD
を使用し、 "0"のすべてのキーを置き換えるコードを使用します。
1)アトミックにnum_sold
を増やすにはどうすればよいですか?
2)操作アトムはいつですか? (できるだけ取引から離れようとする)
3)ドット表記をいつ使用できますか?
4)パラメータを属性にバインドできますか?たとえば、@attribute
をsubdoc.0.num_sold
とすると、
ありがとうございます!