Amazon dynamodb 为什么我的dynamodb ContionExpression不阻止更新
我有一个dynampodb项目,如下所示:Amazon dynamodb 为什么我的dynamodb ContionExpression不阻止更新,amazon-dynamodb,Amazon Dynamodb,我有一个dynampodb项目,如下所示: { 'id': 'some_id', 'task_states': { 'some_task_id': { 'phase': 'FINISHED' } } 现在,我用条件表达式更新此表达式: task_states.some_task_id.phase IN ('ABSENT','STARTING','RUNNING') 更新就发生了!但是我的条件应该失败,因为task\u声明。某些任务id阶段已完成,因此不在(“
{
'id': 'some_id',
'task_states': {
'some_task_id': {
'phase': 'FINISHED'
}
}
现在,我用条件表达式更新此表达式:
task_states.some_task_id.phase IN ('ABSENT','STARTING','RUNNING')
更新就发生了!但是我的条件应该失败,因为task\u声明。某些任务id阶段已完成,因此不在(“缺席”、“开始”、“运行”)
我不明白这里出了什么问题
更新:
以下是完整的boto调用:
boto3.resource("dynamodb").Table("my_table").update_item(
Key={
"id": "some_id",
},
UpdateExpression="SET task_states.some_task_id.phase = :p",
ExpressionAttributeValues=ExpressionAttributeValues={
":p": newPhase
},
ConditionExpression="task_states.some_task_id.phase IN ('ABSENT','STARTING','RUNNING')"
)
您是否正在为任务状态使用表达式属性名称。某些任务id.phase,如{#phase:task_states.some_task_id.phase}?不,应该吗?我试过了,但没用。不一定,但如果你正在使用它,你可能会被表达式名抓住。了解嵌套属性名称如何具有特殊条件