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

Php DynamoDB:deleteItem(或putItem)调用的预期值运算符?,php,amazon-web-services,amazon-dynamodb,Php,Amazon Web Services,Amazon Dynamodb,我正在尝试向deleteItem调用添加一个条件,该调用将在删除该项之前进行评估。(在本例中,DynamoDB表名为table\u name) 我可以发誓有办法做到这一点,但我还没有找到任何关于这一问题的明确文件或讨论。下面的PHP代码块就是我现在拥有的 $cmp_timestamp = strtotime('-60 days'); $dynamo->deleteItem(array( 'TableName' => 'TABLE_NAME', 'Key' =>

我正在尝试向
deleteItem
调用添加一个条件,该调用将在删除该项之前进行评估。(在本例中,DynamoDB表名为
table\u name

我可以发誓有办法做到这一点,但我还没有找到任何关于这一问题的明确文件或讨论。下面的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))
    )
));

当前,上面的代码将检查
表\u NAME.imported\u timestamp
值是否等于
$cmp\u timestamp
的值。非常感谢您的任何帮助或建议

我认为使用Dynamo DB不可能做到这一点。作为一种解决方法,您可以查询/扫描表以查找项目,然后使用
DeleteItem

循环并删除它们。您需要根据密钥架构对表执行
查询
扫描
,以获取要删除的项目的密钥。然后可以使用
BatchWriteItem
删除项目


PHPSDK附带的DynamoDB会话处理程序在其垃圾收集方法中正是这样做的,因此您可能对它感兴趣。SDK使用
Scan
迭代器和
WriteRequestBatch
类来完成此操作。
WriteRequestBatch
类很好,因为它使批删除调用更容易,并为您处理一些边缘情况。有。

我会再等几个小时,看看其他人是否有想法,但这实际上可能是完成我需要的唯一体面的方法。实际上,批删除是通过BatchWriteItem支持的。它可以执行puts和DELETE操作。
$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))
    )
));