首页 > 解决方案 > DynamoDB PutItem 中的非预期结果

问题描述

问:当我有复合主键时,如何避免将项目插入表中?

我只能在文档中找到带有单个主键的示例(只有一个分区键,但没有分区键和排序键)。

语境:

我的期望与我的结果

我正在使用这个命令行片段(从这里修改)将数据插入到表中:

aws dynamodb put-item \
    --table-name Users \
    --item file://item.json \
    --condition-expression "attribute_not_exists(PK) OR NOT begins_with(SK, :sk)" \
    --expression-attribute-values file://values.json

项目.json

{
    "PK": {
        "S": "910cc6dd-b7e2-4286-89d4-db3d0e3fde6b"
    },
    "SK": {
        "S": "user#info#4"
    },
    "Name": {
        "S": "Greg"
    }
}

值.json

{
    ":sk": {
        "S": "user#info"
    }
}

如果我删除 PK 条件,并尝试仅检查 SK 条件,它会插入项目(我希望它不会插入项目),例如:

aws dynamodb put-item \
    --table-name Users \
    --item file://item.json \
    --condition-expression "NOT begins_with(SK, :sk)" \
    --expression-attribute-values file://values.json

上面插入了该项目,即使表中还有一个以开头的项目user#info

标签: amazon-web-servicesamazon-dynamodbdynamodb-queries

解决方案


推荐阅读