Nosql 如何在DynamoDb中查询地图列表

Nosql 如何在DynamoDb中查询地图列表,nosql,amazon-dynamodb,boto3,Nosql,Amazon Dynamodb,Boto3,我在DynamoDb中有一个非主键列,它是列表类型,如下所示: logs=[{ m1:{"key1":"pair1", "key2":"pair2", "timestamp":2189321.212 }, m2:{"key1":"pair1", "key2":"pair2", "timestamp":2112321.212 }, ... }] 所以问题是我想得到一个30天前的物品清单。 我无法查询此文档。在DynamoDB中,您无法根据所需文档类型的值进行查询。除非你想扫描整张表并在内存中执行

我在DynamoDb中有一个非主键列,它是列表类型,如下所示:

logs=[{
m1:{"key1":"pair1",
"key2":"pair2",
"timestamp":2189321.212
},
m2:{"key1":"pair1",
"key2":"pair2",
"timestamp":2112321.212
},
...
}]
所以问题是我想得到一个30天前的物品清单。
我无法查询此文档。

在DynamoDB中,您无法根据所需文档类型的值进行查询。除非你想扫描整张表并在内存中执行,我猜你不会


另一种解决方案是在AWS Elasticsearch服务和DynamoDB中为数据编制索引。您可以向ES提供完整的JSON,它将索引每个属性,这样您就可以运行您正在讨论的查询类型。显然,这是一个自己的项目,但是如果您想保留当前在DynamoDB中的JSON结构,您可以选择该选项。

从DynamoDB中,您不能根据所需的文档类型的值进行查询。除非你想扫描整张表并在内存中执行,我猜你不会


另一种解决方案是在AWS Elasticsearch服务和DynamoDB中为数据编制索引。您可以向ES提供完整的JSON,它将索引每个属性,这样您就可以运行您正在讨论的查询类型。显然,这是一个自己的项目,但是如果您想保留当前在DynamoDB中的JSON结构,您可以选择它。

直接使用DynamoDB函数是不可能的

您可以将每个表日志项加载并序列化到代码中的对象中,然后对对象进行排序和筛选。如果您有很多日志文件,这可能会占用大量内存

如果您可以控制日志数据的存储方式,则可能需要重新构建表,以便将日志存储为表项。您可以将log id设置为分区键,将时间戳设置为范围键,这将使基于时间的查询非常快速


如果您选择了这种方式,请注意,您需要在DynamoDB中将时间戳设置为一个数字,以便将其用作范围键。

直接使用DynamoDB函数是不可能的

您可以将每个表日志项加载并序列化到代码中的对象中,然后对对象进行排序和筛选。如果您有很多日志文件,这可能会占用大量内存

如果您可以控制日志数据的存储方式,则可能需要重新构建表,以便将日志存储为表项。您可以将log id设置为分区键,将时间戳设置为范围键,这将使基于时间的查询非常快速


如果您选择了这条路线,请注意,您需要在DynamoDB中将时间戳设置为一个数字,以便将其用作范围键。

请告诉我以下内容是否有用

我通过CLI以如下方式插入了数据:

这是输入后的外观:

通过Java代码简单地像这样映射它。这很有效。

请告诉我以下内容是否有用

我通过CLI以如下方式插入了数据:

这是输入后的外观:

通过Java代码简单地像这样映射它。这很有效。

简单地说,在DynamoDB中无法实现这一点。您需要重新建模结构。简单地说,在DynamoDB中无法实现这一点。您需要重新建模结构。