Amazon dynamodb UpdateItem超过最大值的条件表达式
我的updateItem调用中有一个条件超过了定义的最大值。当我运行这个时,我的值最终将为101。是否有办法确保条件表达式检查更新的最终值,以防止其超过100?注意,在我的测试中,我增加了1,但最终我将增加任意值Amazon dynamodb UpdateItem超过最大值的条件表达式,amazon-dynamodb,Amazon Dynamodb,我的updateItem调用中有一个条件超过了定义的最大值。当我运行这个时,我的值最终将为101。是否有办法确保条件表达式检查更新的最终值,以防止其超过100?注意,在我的测试中,我增加了1,但最终我将增加任意值 $query = array( 'TableName' => $this->table_name, 'Key' => $this->get_query_key($obj), 'ConditionExpres
$query = array(
'TableName' => $this->table_name,
'Key' => $this->get_query_key($obj),
'ConditionExpression' => 'num_completed <= :max',
'UpdateExpression' => 'SET num_completed = num_completed + :num',
'ExpressionAttributeValues' => array(
':num' => array('N' => 1),
':max' => array('N' => 100)
)
//'ReturnConsumedCapacity' => 'TOTAL'
);
try {
$this->dynamo_db->updateItem($query);
}
$query=array(
“TableName”=>$this->table\u name,
'Key'=>this->get_query_Key($obj),
“ConditionExpression'=>”num_completedDDB在更新操作之前计算条件表达式。也就是说,您不应该依赖更新表达式的“final”值(即使它是原子计数器)
一个非常简单的解决方法是编写一个丰富的条件表达式,例如从:max
中减去:num
,如下所示:
...
'ConditionExpression' => 'num_completed <= (:max - :num)',
'UpdateExpression' => 'SET num_completed = num_completed + :num',
...
。。。
“ConditionExpression'=>”num_completed您是否针对实际的DynamoDB服务或DynamoDB local进行了测试?这不是问题所在。@MikeKobit然后我认为文档有误导性,如果没有错的话。我将向他们提交一份票据。谢谢!