我正在尝试向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
的值。非常感谢任何帮助或建议!
答案 0 :(得分:0)
我认为使用Dynamo DB无法做到这一点。作为一种变通方法,您可以查询/扫描表格以查找项目,然后使用DeleteItem
循环并删除它们。
答案 1 :(得分:0)
您需要在桌面上执行Query
或Scan
,具体取决于您的密钥架构,以获取要删除的项目的键。然后,您可以使用BatchWriteItem
删除项目。
PHP SDK附带的DynamoDB会话处理程序在其垃圾收集方法中完成了这种类型的操作,因此您可能对checking out that implementation感兴趣。 SDK使用Scan
迭代器和WriteRequestBatch
类来执行此操作。 WriteRequestBatch
类很好,因为它使批量删除调用更容易,并为您处理一些边缘情况。有some docs for it in the AWS SDK for PHP User Guide。