Md.*_*lam 4 amazon-dynamodb boto3 aws-lambda
我在发电机 dB 表中有以下字段
event_on—— 字符串类型
user_id -- 数字类型
事件名称——字符串类型
由于该表可能有多个 user_id 记录,而 event_on 是可以唯一的单个字段,因此我将其设为主键,并将 user_id 作为排序键
现在我想删除一个用户的所有记录,所以我的代码是
response = dynamodb.delete_item(
TableName=events,
Key={
"user_id": {"N": str(userId)}
})
Run Code Online (Sandbox Code Playgroud)
它抛出错误
发生异常调用DeleteItem操作时发生错误(ValidationException):提供的键元素与架构不匹配
还有无论如何要删除的范围
有人可以建议我应该如何处理 dynamodb 表结构才能使此代码正常工作
谢谢,
听起来您已经使用复合主键对数据进行了建模,这意味着您同时拥有分区键和排序键。下面是一些示例数据的示例。
在 DynamoDB 中,访问项目(在 RDBMS 语言中也称为“行”)的最有效方法是指定完整主键 ( getItem ) 或分区键 ( query )。如果您想按任何其他属性进行搜索,则需要使用扫描操作。请务必小心scan,因为它可能是一种访问数据的昂贵方式(在性能和金钱方面)。
当涉及到删除时,您有几种选择。
为了有效地使用这些选项,您首先需要确定要删除的项目。因为您想单独使用排序键的值来获取,所以您有两个选择;
scan查找感兴趣的项目。这并不理想,但如果您无法更改数据模型,这是一个选择。user_id。如果您选择选项 2,您的数据将如下所示
这将允许您获取给定用户的所有项目,然后您可以使用我上面概述的方法之一删除这些项目。
| 归档时间: |
|
| 查看次数: |
12428 次 |
| 最近记录: |