Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb 为什么我的dynamodb ContionExpression不阻止更新_Amazon Dynamodb - Fatal编程技术网

Amazon dynamodb 为什么我的dynamodb ContionExpression不阻止更新

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阶段已完成,因此不在(“

我有一个dynampodb项目,如下所示:

{
'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}?不,应该吗?我试过了,但没用。不一定,但如果你正在使用它,你可能会被表达式名抓住。了解嵌套属性名称如何具有特殊条件