DynamoDB使用分区键tconst与排序键primaryTitle查询单条数据问题
问题根因
你当前命令返回多条数据的核心原因是--key-condition-expression参数的语法错误:你将两个条件拆分放在了两对独立引号中,CLI仅会将前半部分tconst = :tconst识别为键条件表达式的值,后半部分的排序键匹配规则完全没有生效,甚至会导致分区键的过滤逻辑失效,才会返回不符合tconst匹配规则的多条数据。
修正方案
方案1:修正Query命令写法
将整个键条件表达式放在同一对引号中即可:
aws dynamodb query \ --endpoint-url http://localhost:8000 \ --table-name title \ --key-condition-expression "tconst = :tconst AND primaryTitle = :primaryTitle" \ --expression-attribute-values '{ ":tconst":{"S":"xxxx"}, ":primaryTitle":{"S":"something"} }'
方案2:使用更适合单条主键查询的GetItem命令
对于已知完整主键(分区键+排序键)要查询单条数据的场景,直接使用get-item接口效率更高,天然只会返回唯一匹配的单条数据:
aws dynamodb get-item \ --endpoint-url http://localhost:8000 \ --table-name title \ --key '{ "tconst": {"S": "xxxx"}, "primaryTitle": {"S": "something"} }'
内容的提问来源于stack exchange,提问作者user686483
相关产品推荐
相关产品推荐

