アプリ側のロジックがないと、単一の更新を使用して必要なことを行うことはできません。指定された名前のウィジェットドキュメントが存在しない場合に新しいウィジェットドキュメントを自動的に作成する場合を除いて、機能としてのアップサートはこの特定の問題には関係しないことに注意してください。
発生している問題は、配列要素の存在に応じて2つの異なる更新を実行できる機能がないことです。 2つのオプションは次のとおりです:
- アイテムを見つけ、関連するプロパティの存在を確認し、新しいプロパティまたは変更されたプロパティを使用して適切な更新をコンパイルして実行します。これには、並行性が安全な方法ではないという重要な欠点があります。つまり、2つのWebサービスが同時にこれを試みると、互いの変更が上書きされる可能性があります。
- ウィジェットのプロパティを埋め込みではなくトップレベルのドキュメントにします。アップサートを使用して、やりたいことを実行できます。明らかな欠点は、それがスキーマ設計の観点からはあまり良いオプションではないということです。たとえば、ウィジェットをフェッチした場合、すべてのプロパティが自動的に取得されるわけではありません。