python - 如何获取与特定键匹配的发电机数据库中的项目
问题描述
- 我有 dynamo db,
user
aspartition_key
和 time assort_key
- 我需要从 dynamodb 中提取哪里
user=abc@gmail.com
和message=192.168.1.1
使用 filter Attr
,我可以用 key 和 value 提取
table.scan(FilterExpression=Attr("message").eq("192.168.1.1"))
现在如何为特定用户提取?
解决方案
在 DynamoDB 中获取数据有两种主要方法;scan
和query
当分区键已知时,该query
操作可用于获取项目。该scan
操作通过搜索整个数据库返回一个或多个项目。正如您可能猜到的那样,该query
操作优于scan
操作,因为它是一种性能更高的操作。
在您的示例中,分区键是已知的。因此,您应该使用该query
操作来获取您想要的数据。操作应该是这样的
table.query( {
"TableName": "YOUR TABLE NAME HERE",
"KeyConditionExpression": "#user = :user",
"FilterExpression": "#message = :message",
"ExpressionAttributeNames": {"#user":"user","#message":"message"},
"ExpressionAttributeValues": {":user": {"S":"abc@gmail.com"},":message": {"S":"192.168.1.1"}}
})
推荐阅读
- mongodb - Mongodb - $match 内的 $cond
- gradle - gradle 任务树从构建中排除
- c++ - 编译器保持内联函数和数组值
- vega-lite - Vega-lite 图表在查找时失败,在变换中合并聚合
- c# - 如何比较2个数据表C#之间每一行的数据?
- sql - Google Cloud SQL - 有效查询的语法错误
- openssl - 在连接的 CRL 文件中输出所有 CRL
- r - 计算数据框行中零的百分比
- python - Tensorflow 2 中用于自定义训练循环的 Tensorboard
- android - 用于用户身份验证和登录的 FirebaseUI,未在显示屏中显示登录选项