如何通过AWS CLI扫描DynamoDB满足指定条件且嵌套on_demand map不存在的项
AWS CLI DynamoDB 扫描命令解决方案
适用场景
符合以下两个筛选条件的DynamoDB表项查询:
- 顶级属性
is_offsite值为true,video_type值为OFFSITE - 顶级列表属性
playlist中,所有Map类型元素均不存在on_demand嵌套属性
完整命令
aws dynamodb scan \ --table-name YOUR_TABLE_NAME \ --filter-expression "is_offsite = :is_offsite_val AND video_type = :video_type_val AND NOT exists(playlist[*].on_demand)" \ --expression-attribute-values '{":is_offsite_val": {"BOOL": true}, ":video_type_val": {"S": "OFFSITE"}}'
说明
- 请将命令中的
YOUR_TABLE_NAME替换为你的实际DynamoDB表名 - 扫描操作为全表遍历,数据量较大时会消耗较多读容量,你可以按需添加
--max-items、--page-size参数控制返回规模,或者添加--projection-expression指定仅返回需要的属性 - 筛选逻辑说明:
playlist[*].on_demand会提取列表所有元素的on_demand属性,只要有一个元素存在该属性,exists()就会返回true,添加NOT后即可匹配所有元素都不存在该属性的项
内容的提问来源于stack exchange,提问作者Brian N
相关产品推荐
相关产品推荐

