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

您需要根据您的密钥架构执行 aQueryScanon 您的表,以获取要删除的项目的密钥。然后您可以使用BatchWriteItem删除项目。

PHP SDK 附带的 DynamoDB 会话处理程序在其垃圾收集方法中正是这样做的,因此您可能有兴趣查看该实现。SDK 使用ScanIterator 和WriteRequestBatch类来执行此操作。该类WriteRequestBatch很好,因为它使批量删除调用更容易,并为您处理一些边缘情况。AWS SDK for PHP User Guide 中有一些文档。

于 2013-06-13T20:04:50.243 回答