Amazon dynamodb 如何基于DynamoDB复合排序键定义有效的范围查询?

Amazon dynamodb 如何基于DynamoDB复合排序键定义有效的范围查询?,amazon-dynamodb,dynamodb-queries,amazon-dynamodb-index,Amazon Dynamodb,Dynamodb Queries,Amazon Dynamodb Index,使用复合排序键,可以在可以在层次结构的任何级别查询的数据中定义层次结构(一对多)关系 例如,在列出地理位置的表中,排序键的结构可以如下所示: [country]#[city]#[founded_date]#[population] 根据使用排序键来组织数据的方法,应该可以在任何一个聚合级别(从国家到人口,以及介于两者之间的所有级别)对位置列表进行有效的范围查询 我如何编写一个查询,例如获取城市名称以“new”开头的所有项目,这些项目是1923年3月14日之前创建的,人口超过10万?您引用的示例

使用复合排序键,可以在可以在层次结构的任何级别查询的数据中定义层次结构(一对多)关系

例如,在列出地理位置的表中,排序键的结构可以如下所示:

[country]#[city]#[founded_date]#[population]
根据使用排序键来组织数据的方法,应该可以在任何一个聚合级别(从国家到人口,以及介于两者之间的所有级别)对位置列表进行有效的范围查询


我如何编写一个查询,例如获取城市名称以“new”开头的所有项目,这些项目是1923年3月14日之前创建的,人口超过10万?

您引用的示例是关于分层数据的100%。您引入了不分层次的数据,这完全打破了这种模式。在本例中,您无法在不了解国家、地区、州和县的情况下找到以“新”开头的城市。层次结构模型假设您总是在层次结构的已知部分内搜索,并希望获得其下的所有内容。当他们说“中间的一切”时,他们的意思是你可以在这些级别中的任何一个进行查询,而不是你可以查询这些元素中的任何一个。例如,您可以通过指定国家、地区和州来查询纽约州的每个位置。通过指定国家、地区、州、县和城市,您可以在纽约找到所有内容

[国家]#[地区]#[州]#[县]#[市]#[社区]

要完成您想要做的事情,您需要支持一些完全不同的访问模式。您可能需要一组GSI来允许您拥有的不同访问模式,并且可能需要在密钥中存储的内容之外进行一些过滤。请记住,NoSQL完全是关于访问模式的。您应该花一些时间弄清楚这些是什么,一旦弄清楚了,您就可以弄清楚如何存储数据,包括支持访问数据的方式所需的任何索引