在 DynamoDB 中,如果参数小于某个值,我如何有条件地更新参数,但如果它尚不存在则执行?
In DynamoDB, how do I conditionally update a parameter if less than a value, but also execute if it does not yet exist?
我有一个值,我想在 DynamoDB 行中增加 1。第一次执行时,该参数不存在,因此将其设置为一个。但是,我希望它在达到特定值时失败,因此它只能更新这么多次。
我使用的是正确的 Expected 语法,但我似乎无法找到一种方法来允许当前不进行双重更新:如果不存在则进行更新,如果存在则进行更新并且低于阈值。这可以在单个更新命令中实现吗?
请注意,这与简单地希望将一个值设置为 1 或按照下面的评论中的建议从那里相加不同,而是这个单个表达式必须处理 属性在那里或一个数字,然后继续添加到某个阈值,然后一旦达到阈值就失败并且不允许更新。
好的,我相信这是可能的,但前提是您将整个更新命令切换为使用表达式而不是使用“Expected”和“AttributeUpdates”字段。这确实使它更难使用,但是你应该能够制作复合条件,例如
params.ConditionExpression = 'attribute_not_exists(#A) OR #A < ' + maxValue.toString();
我有一个值,我想在 DynamoDB 行中增加 1。第一次执行时,该参数不存在,因此将其设置为一个。但是,我希望它在达到特定值时失败,因此它只能更新这么多次。
我使用的是正确的 Expected 语法,但我似乎无法找到一种方法来允许当前不进行双重更新:如果不存在则进行更新,如果存在则进行更新并且低于阈值。这可以在单个更新命令中实现吗?
请注意,这与简单地希望将一个值设置为 1 或按照下面的评论中的建议从那里相加不同,而是这个单个表达式必须处理 属性在那里或一个数字,然后继续添加到某个阈值,然后一旦达到阈值就失败并且不允许更新。
好的,我相信这是可能的,但前提是您将整个更新命令切换为使用表达式而不是使用“Expected”和“AttributeUpdates”字段。这确实使它更难使用,但是你应该能够制作复合条件,例如
params.ConditionExpression = 'attribute_not_exists(#A) OR #A < ' + maxValue.toString();