如何在发电机数据库中获取与特定键匹配的项目
How to get the item in the dynamo db which match particular key
- 我有 dynamo db,
user
为 partition_key
,时间为 sort_key
- 我需要从 dynamodb 中提取
user=abc@gmail.com
和 message=192.168.1.1
使用过滤器 Attr
,我可以使用键和值进行提取
table.scan(FilterExpression=Attr("message").eq("192.168.1.1"))
现在如何为特定用户提取?
在 DynamoDB 中获取数据有两种主要方式; scan
和 query
当分区键已知时,query
操作可用于获取项目。 scan
通过搜索 整个 数据库操作 returns 一项或多项。您可能会猜到,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"}}
})
- 我有 dynamo db,
user
为partition_key
,时间为sort_key
- 我需要从 dynamodb 中提取
user=abc@gmail.com
和message=192.168.1.1
使用过滤器 Attr
,我可以使用键和值进行提取
table.scan(FilterExpression=Attr("message").eq("192.168.1.1"))
现在如何为特定用户提取?
在 DynamoDB 中获取数据有两种主要方式; scan
和 query
当分区键已知时,query
操作可用于获取项目。 scan
通过搜索 整个 数据库操作 returns 一项或多项。您可能会猜到,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"}}
})