如果项目不存在,则放入Dynamodb批处理

Shu*_*ora 6 amazon amazon-web-services amazon-dynamodb

DynamoDb不支持批量更新,它仅支持批量放置。

但是有可能只批处理不存在带有键的项目吗?

Dan*_*Apt 3

batchWriteItem,有以下注释:

例如,您无法对单个放置和删除请求指定条件,并且 BatchWriteItem 不会在响应中返回已删除的项目。

相反,我建议使用putItem条件表达式。文档底部putItem有以下注释:

[...]要防止新项目替换现有项目,请使用包含函数的条件表达式,该函数attribute_not_exists具有用作表的分区键的属性名称[...]

因此请确保将以下内容添加到ConditionExpression(此处使用 NodeJS 语法)

const params = {
    Item: {
        userId: {
            S: "Beyonce",
        }
    },
    ConditionExpression: "attribute_not_exists(userId)"
};
Run Code Online (Sandbox Code Playgroud)

  • put item 是针对单个项目的,这将使写入速度变慢,如果批量写入支持项目存在检查,那么它将是针对多个写入的单个网络调用,并且性能更快。 (4认同)
  • 是的,当亚马逊可以在批量写入中添加条件表达式时,为什么要这么复杂呢? (2认同)