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))
)
));