标签: python-3.x amazon-dynamodb boto3 dynamodb-queries
我有用户表,用户有 user_id 字段。
我需要获取给定列表的所有用户详细信息,例如[“ 1234”,“ 3456”]。
在Boto3中没有包含类似查询的内容。
我正在使用
response = table.scan(FilterExpression=Attr('user_id').is_in(["1234","3456"]))
但是我没有得到预期的结果。
如果我错过任何事情,请纠正我。
答案 0 :(得分:1)
您需要回答的一个问题是:user_id是您的DynamoDB哈希/分区密钥吗?如果是,那么您正在寻找的操作是:BatchGetItem。您可以here看到它的工作原理。
如果user_id不是您的分区/哈希键,第一个(也是错误的)解决方案是扫描整个表并过滤其数据(这是一种非常昂贵的方法,应不惜一切代价避免使用)。第二种更有效的解决方案是使用user_id作为哈希/分区键来创建全局索引(GSI),并将要返回的数据投影到索引中。您可以了解有关GSI here的更多信息。