amazon-web-services - DynamoDB contains() FilterExpression with query() 而不是 scan()
问题描述
我想从表中获取所有带有 query() 的项目,而不是使用扫描,因为它非常昂贵
我可以在没有 table.scan() 的情况下使用 .contains()
dynamodb = boto3.resource('dynamodb')
table= dynamodb.Table('investors')
data = table.scan(
FilterExpression=Attr('groups_name').contains('person_name')
)
# Something like this
data = table.query(...
....
('groups_name').contains('person_name')
)
在我的 DynamoDB -> 投资者(表)(都有相同的分区键='fund')
-> 示例项目 -> groups_name [list]:person_name(字符串)
解决方案
如果要从表中获取所有项目并具有多个分区键值,则必须使用Scan
. API对Query
单个项目集合(即具有相同分区键的所有项目)进行操作,FilterExpression
并且也可以在那里进行过滤。
包含过滤器也不适用于 Query 操作中的 aKeyConditionExpression
或 the FilterExpression
,最接近的匹配项是starts_with
,但这是不同的。
为了有效地处理这种访问模式,您需要重新考虑您的数据模型。
推荐阅读
- sql - ms 访问,需要获取具有不同列的所有行
- c++ - 为什么调用 `lower_bound` 函数不需要`std` 前缀?
- python - 命令无法在新版本的不和谐机器人上工作
- javascript - 为什么小计不能相互加起来?
- javascript - 如果值存在于 CSV Papa Parse 和 jQuery 中
- reactjs - React + Antd + Rollup 组件库“错误:无效的钩子调用。钩子只能在函数组件的主体内部调用”
- php - 如何根据与特殊数据匹配的json列检索数据
- android - 具有超时的 Android Q ConnectivityManager.requestNetwork 显示错误对话框,可停止任何后续请求
- python - sympy Expectation CoercionFailed("期望一个整数,得到 %s" % a)
- r - 基于 MAD 为汇总数据集和时间序列平均值识别异常值的 ID 和删除异常值