Amazon dynamodb DynamoDB降序获取记录

Amazon dynamodb DynamoDB降序获取记录,amazon-dynamodb,Amazon Dynamodb,我收集了100张唱片 集合名称:'users' { "name":'senthilkumar', "email":'senthily88@gmail.com', //HashKey "age":21, "created":1465733486137, //RangeKey-timestamp } 我需要通过以下sql查询获取记录 select * from users order by created desc limit 10 如何从Dynam

我收集了100张唱片

集合名称:'users'

{
   "name":'senthilkumar',  
   "email":'senthily88@gmail.com',  //HashKey
   "age":21,
   "created":1465733486137,         //RangeKey-timestamp
}
我需要通过以下sql查询获取记录

select * from users order by created desc limit 10

如何从DynamoDB中获取上述查询格式记录DynamoDB根据range key属性对结果进行排序。您可以将
ScanIndexForward
布尔参数设置为
true
进行升序,或将
false
进行降序

资源:

使用KeyConditionExpression参数提供特定值 对于分区键。查询操作将返回所有 表或索引中具有该分区键值的项。你可以 (可选)通过指定 在KeyConditionExpression中排序键值和比较运算符。 您可以使用ScanIndexForward参数在forward中获取结果 或按排序键反向排序


将Json数据保存到DynamoDB us put()

使用Query()从DynamoDB获取数据

  QueryParam = {
       TableName: 'YOUR TABLE NAME HERE',
       IndexName: 'YOUR INDEX NAME HERE', //IF YOUR CREATED NEW INDEX
       KeyConditionExpression: "UserId = :UserId  ", //YOUR PRIMARY KEY
       ExpressionAttributeValues: {
          ":UserId": UserId,
       },
       ScanIndexForward: false, //DESC ORDER, Set 'true' if u want asc order 
       ExclusiveStartKey: LastEvalVal, //Pagination - LastEvaluatedKeyPair
       Limit: 10 //DataPerReq
    }
如果要返回表中的所有行,则不能使用查询API,因为该API要求您提供分区键值,以便根据该键值筛选结果(即,假设分区键为
name
,则只能使用查询API返回
name
=给定值的结果子集,即
name=senthilkumar

如果要返回表中的所有行,必须使用扫描API:

请注意,所有结果都将按范围键的值按升序提供。您不能使用扫描API对内容进行反向排序。您需要在应用层中使用编写代码时使用的任何语言反转结果集,以将结果颠倒过来

扫描不能很好地扩展,如果表包含具有唯一分区键的项,则无法使用扫描创建分页、反向排序的解决方案


如果这是您的情况,并且如果您想从DynamoDB返回分页+反向排序集,您需要重新考虑表的设计以及哪些列是分区键/范围键/索引,以便您可以使用查询API。

Yes,true=ascending,false=descending。谢谢您的回复,我可以得到像Cre这样的示例吗ateTable结构和fetch order by records Json格式请,我尝试了更多的方法,但无法获得降序结果,我知道我的create table结构是错误的,kinldy请提供create table Json和fetch records查询格式示例。他们,您是否能够以降序获得记录?我面临着类似的问题re.这个答案是错误的。OP想要返回所有行。这个答案是通过一个特定的唯一ID返回所有行的特定子集。这不只是搜索一个特定的用户吗?您必须在这里传入一个用户ID?您必须指定主键才能从表中查询数据,您可以将主键更改为其他一些字段nd pass tat as paramok谢谢。这不会只返回与该主键相关的值吗?如果主键是唯一的,您将只返回一个用户记录?如何使用一个主键作为查询返回10个不同的用户?是的,只需在表中创建一个新索引,并将不同的字段作为主键和q使用新创建的Indexname查询Dynamo DB。此答案错误。OP希望返回所有行。此答案用于通过特定的唯一ID返回所有行的特定子集
  QueryParam = {
       TableName: 'YOUR TABLE NAME HERE',
       IndexName: 'YOUR INDEX NAME HERE', //IF YOUR CREATED NEW INDEX
       KeyConditionExpression: "UserId = :UserId  ", //YOUR PRIMARY KEY
       ExpressionAttributeValues: {
          ":UserId": UserId,
       },
       ScanIndexForward: false, //DESC ORDER, Set 'true' if u want asc order 
       ExclusiveStartKey: LastEvalVal, //Pagination - LastEvaluatedKeyPair
       Limit: 10 //DataPerReq
    }