一意の ID を持つオブジェクトがたくさんあります。次のように、すべてのオブジェクトに複数のラベルを関連付けることができます。
123: ['a', 'hello']
456: ['dsajdaskldjs']
789: (no labels associated yet)
すべてのオブジェクトを DynamoDB に保存するつもりはなく、これらのラベルのセットだけを保存する予定です。したがって、次のようなラベルを追加することは理にかなっています。
- (id = needed_id) のレコードを見つける
- があり、 という名前のセットがある場合、
label_set
このセットにラベルを追加します - そのような ID を持つレコードがない場合、または既存のレコードに という名前の属性がない場合は
label_set
、レコードと属性を作成し、ラベルで構成されるセットで属性を初期化します
数のセットを使用した場合ADD
、コマンドの操作だけを使用できますUPDATE
。このコマンドは、私が説明したことを正確に実行します。ただし、これは文字列のセットでは機能しません。
指定された主キーに一致する項目がない場合:
ADD - 指定された主キーと属性値の番号 (または番号のセット) を使用して項目を作成します。文字列型には無効です。
そのため、 set toのPUT
操作を使用し、その後に (失敗した場合)操作を行う必要があります。これらは 2 つの操作であり、ちょっと面倒です (操作ごとに支払うため、このコストは本来の 2 倍になります)。Expected
{"label_set":{"Exists":false}}
ADD
この制限は、私には本当に奇妙に思えます。数値セットで機能するものが文字列セットでは機能しないのはなぜですか? 多分私は何か間違ったことをしています。
(123, 'a'), (123, 'hello')
セットを持つオブジェクトごとに 1 つのレコードの代わりに、多くのレコードを使用することは解決策ではありませんget
。スキャンせずに、セットからすべての値を一度に取得したいのです。