ソファベースのサブドキュメントを更新する最良の方法は何ですか? ネストされた json ドキュメントについて取り上げています。set name = 'Jon Doe'
単純なフィールドは、ネストされた json documentのような構文を使用して簡単に更新できます。公式ドキュメントのすべてのページを読みましたが、すべてのページでkeys
orというフェーズが使用されていましpath
たが、これは json パスです。
したがって、 org.adddress.city.name のような複雑にネストされた json の場合、 json から動的またはプログラムでパスを見つける方法。6 ~ 7 レベルの深さのネストされた json を考えてみてください。ほとんど見られませんが、どうでしょうか。
カウチベースでのサブドキュメントの更新とは、ドキュメント全体の一部または一部を更新するか、ネストできる単純なフィールドを更新することを意味します。
私の方法は、どのjsonフィールドが更新されるかを教えてくれるMerge Jsonパッチを見つけることです。そのパッチにネストされたフィールドが含まれている場合、
"address": {
"city": {
"id": "25",
"name": "Atlanta"
}
}
mutate_in関数を使用してCouchbaseでこれを更新するにはaddress.city.id
、 とであるパスが必要address.city.name
です。N1QL クエリでドキュメントを更新する場合でも、それらのパスを生成する必要があると思います。
次がどこまで続くかわからないため、再帰関数を使用してjsonからこれらのパスを生成しようとしています。ここに要点があります。
複雑なサブドキュメントを更新するパスを生成せずに他の方法があるかどうか知りたいです。