1

deleteItem項目を削除する前に評価される条件を呼び出しに追加しようとしています。(この例では、DynamoDB テーブル名は ですTABLE_NAME)。

TABLE_NAME.imported_timestamp value is less than timestamp of 60 days ago

これを行う方法があると断言できたかもしれませんが、この問題に関する決定的な文書や議論を見つけることができませんでした. 次のPHPコードブロックは、私が今持っているものです..

$cmp_timestamp = strtotime('-60 days');
$dynamo->deleteItem(array(
    'TableName' => 'TABLE_NAME',
    'Key' => array(
        'HashKeyElement' => array('S' => 'my_hash_key_element')
    ),
    'Expected' => array(
        'imported_timestamp' => array('Value' => array('N' => $cmp_timestamp))
    )
));

現在、上記のコードはTABLE_NAME.imported_timestampvalue が の値と等しいかどうかをチェックします$cmp_timestamp。どんな助けや提案も大歓迎です!

4

2 に答える 2

0

Dynamo DB でこれを行うことはできないと思います。回避策として、テーブルをクエリ/スキャンしてアイテムを見つけ、ループして削除することができますDeleteItem

于 2013-06-13T17:59:36.620 に答える
0

削除するアイテムのキーを取得するには、キー スキーマに応じてテーブルに対してQueryまたはを実行する必要があります。Scanその後BatchWriteItem、アイテムを削除するために使用できます。

PHP SDK に同梱されている DynamoDB セッション ハンドラーは、ガベージ コレクション メソッドでまさにこのタイプのことを行うので、その実装を確認することに興味があるかもしれません。SDK は、クラスScanと共に Iteratorを使用してこれを行います。WriteRequestBatchこのWriteRequestBatchクラスは、バッチ削除の呼び出しを簡単にし、いくつかの特殊なケースを処理できるので便利です。AWS SDK for PHP ユーザーガイド には、そのためのドキュメントがいくつかあります。

于 2013-06-13T20:04:50.243 に答える