DynamoDB:deleteItem(或putItem)调用的预期值运算符?

时间:2013-06-13 17:50:57

标签: php amazon-web-services amazon-dynamodb

我正在尝试向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_timestamp值是否等于$cmp_timestamp的值。非常感谢任何帮助或建议!

2 个答案:

答案 0 :(得分:0)

我认为使用Dynamo DB无法做到这一点。作为一种变通方法,您可以查询/扫描表格以查找项目,然后使用DeleteItem循环并删除它们。

答案 1 :(得分:0)

您需要在桌面上执行QueryScan,具体取决于您的密钥架构,以获取要删除的项目的键。然后,您可以使用BatchWriteItem删除项目。

PHP SDK附带的DynamoDB会话处理程序在其垃圾收集方法中完成了这种类型的操作,因此您可能对checking out that implementation感兴趣。 SDK使用Scan迭代器和WriteRequestBatch类来执行此操作。 WriteRequestBatch类很好,因为它使批量删除调用更容易,并为您处理一些边缘情况。有some docs for it in the AWS SDK for PHP User Guide