2017-11-13 10 views
2

内部更新オブジェクト私は、例えば、以下の文書がある場合:私は、UPDATEクエリを実行するとのCouchbase - 文書

{「AUDI」 「作る」:「BMW」、 「make1を」} UPDATE翻訳SET make2 = "MERCEDES" WHERE META()。id = "CARS"の場合、問合せに問題はなく、make2が文書に追加されます。

私はUPDATEクエリを実行します。UPDATE Translations SET make2MODEL = "CLS"、make2MODIFICATION = "500" WHERE META()。id = "CARS" クエリは「成功」を返しますが、何も追加されません。 make2がすでに存在する場合は、すべてが予想どおりに更新されますが、オブジェクトが存在しない場合にのみ問題が表示されます。

答えて

1

親プロパティがJSONオブジェクトの場合のみ、ネストされたプロパティを更新できます。親プロパティが文字列に設定されている場合、あなたが述べた内容とは異なり、更新は成功しません。

UPDATE Translations USE KEYS "CARS" 
    SET make2 = {}; 
UPDATE Translations USE KEYS "CARS" 
    SET make2.MODEL = "CLS", d.make7.MODIFICATION = "500"; 

それとも、1行でこれを行うことができます:

これは動作します文字列に設定された親を持つ

UPDATE Translations USE KEYS "CARS" 
    SET make2 = {}, make2.MODEL = "CLS", d.make7.MODIFICATION = "500"; 
私は、共通の文字列プロパティと例を挙げた
+0

、ないネストされたプロパティmake2が既にオブジェクトとして存在していれば、2番目の例は成功しました。私はあなたの提案を試み、make2 = {}を設定し、今、それは動作します、ありがとう。 –

+1

しかし、あなたは注意する必要があります! make2の他のものはすべて削除されるので、技術的にはパスを設定せず、オブジェクトmake2を{MODEL: "CLS"}に置き換えます。あなたは前にmake2にあったものをすべて失うでしょう。 https://forums.couchbase.com/t/updating-anentity-object-problem/14778/2誰かがmake2の内容を保存し、MODELだけをアップデートするよりよい解決策を投稿する場所を参照してください。 –

関連する問題