具有过期 IP 地址的用户的 DynamoDB 查询
DynamoDB Query for users with expired IP addresses
所以我有一个 DynamoDB 数据库 table 看起来像这样(导出到 csv):
"email (S)","created_at (N)","firstName (S)","ip_addresses (L)","lastName (S)","updated_at (N)"
"name@email","1628546958.837838381","ddd","[ { ""M"" : { ""expiration"" : { ""N"" : ""1628806158"" }, ""IP"" : { ""S"" : ""127.0.0.1"" } } }]","ddd","1628546958.837940533"
我希望能够对所有过期的 IP(附加到用户的属性)进行“查询”而不是“扫描”。时间以unix时间存储。
现在我正在扫描整个 table 并逐个查看每个用户,然后循环查看他们的所有 IP 以查看它们是否已过期。但我需要使用查询来执行此操作,扫描很昂贵。
table布局是这样的:
主键 = 电子邮件
attributes = firstName, lastName, ip_addresses({} 映射数组,其中每个映射都有 IP,Expiration 作为两个键)。
我不知道如何使用查询来执行此操作,所以如果有人能告诉我如何操作,我将不胜感激! :)
我目前正在 运行 使用 python 和 boto3 进行扫描,如下所示:
response = client.scan(
TableName='users',
Select='SPECIFIC_ATTRIBUTES',
AttributesToGet=[
'ip_addresses',
])
根据 boto3 文档,查询操作根据主键值查找项目。您可以查询任何具有复合主键(分区键和排序键)的 table 或二级索引。
使用 KeyConditionExpression 参数为分区键提供特定值。查询操作将 return 来自 table 的所有项目或使用该分区键值编制索引。您可以选择通过在 KeyConditionExpression 中指定排序键值和比较运算符来缩小查询操作的范围。要进一步细化查询结果,您可以选择提供 FilterExpression 。 FilterExpression 确定结果中的哪些项目应该 returned 给你。所有其他结果都被丢弃。
长话短说,它只会获取您在 运行 查询时提到其主键的特定行。
一个查询操作总是return一个结果集。如果没有找到匹配项,结果集将为空
所以我有一个 DynamoDB 数据库 table 看起来像这样(导出到 csv):
"email (S)","created_at (N)","firstName (S)","ip_addresses (L)","lastName (S)","updated_at (N)"
"name@email","1628546958.837838381","ddd","[ { ""M"" : { ""expiration"" : { ""N"" : ""1628806158"" }, ""IP"" : { ""S"" : ""127.0.0.1"" } } }]","ddd","1628546958.837940533"
我希望能够对所有过期的 IP(附加到用户的属性)进行“查询”而不是“扫描”。时间以unix时间存储。
现在我正在扫描整个 table 并逐个查看每个用户,然后循环查看他们的所有 IP 以查看它们是否已过期。但我需要使用查询来执行此操作,扫描很昂贵。
table布局是这样的:
主键 = 电子邮件 attributes = firstName, lastName, ip_addresses({} 映射数组,其中每个映射都有 IP,Expiration 作为两个键)。
我不知道如何使用查询来执行此操作,所以如果有人能告诉我如何操作,我将不胜感激! :)
我目前正在 运行 使用 python 和 boto3 进行扫描,如下所示:
response = client.scan(
TableName='users',
Select='SPECIFIC_ATTRIBUTES',
AttributesToGet=[
'ip_addresses',
])
根据 boto3 文档,查询操作根据主键值查找项目。您可以查询任何具有复合主键(分区键和排序键)的 table 或二级索引。
使用 KeyConditionExpression 参数为分区键提供特定值。查询操作将 return 来自 table 的所有项目或使用该分区键值编制索引。您可以选择通过在 KeyConditionExpression 中指定排序键值和比较运算符来缩小查询操作的范围。要进一步细化查询结果,您可以选择提供 FilterExpression 。 FilterExpression 确定结果中的哪些项目应该 returned 给你。所有其他结果都被丢弃。
长话短说,它只会获取您在 运行 查询时提到其主键的特定行。
一个查询操作总是return一个结果集。如果没有找到匹配项,结果集将为空