DynamoDB でとある属性が存在しない項目を探す

特定の属性を持たない項目を洗い出してなんとかする。というシチュエーション。

必要なデータなら入れるときに弾きなさいよ。というところでもあるけれど、必須ではないけど・・・。というような場面は、まあありえるか。

ということで、調べてみた。

FilterExpression に Attr で 属性を指定して、not_exists() でフィルタできそう。

demo というテーブルを用意して、id とか適当にパーティションキーを設定。データを2件投入。片方は「fld1」という属性をもたせる。もう片方はない。

これでできた。

Scan な上に FilterExpression だから、項目の件数が多いと辛そうかも。できる限りデータ投入時に空文字でいいから属性を入れておいたほうが良いです。