DynamoDB Descending Order获取记录

use*_*631 8 amazon-dynamodb

我收集了100条记录,

集合名称:'users'

{
   "name":'senthilkumar',  
   "email":'senthily88@gmail.com',  //HashKey
   "age":21,
   "created":1465733486137,         //RangeKey-timestamp
}
Run Code Online (Sandbox Code Playgroud)

我需要明智地获取以下sql查询的记录

select * from users order by created desc limit 10
Run Code Online (Sandbox Code Playgroud)

我如何从DynamoDB获取上述查询格式记录

Eya*_* Ch 16

Dynamodb按范围键属性对结果进行排序.为了获得asc/desc顺序,你应该使用ScanIndexForward参数.

资源:http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

使用KeyConditionExpression参数为分区键提供特定值.Query操作将返回表或索引中具有该分区键值的所有项.您可以选择通过在KeyConditionExpression中指定排序键值和比较运算符来缩小Query操作的范围.您可以使用ScanIndexForward参数按排序键以正向或反向顺序获取结果.

  • 是的,true =升序,false =降序. (5认同)

Ana*_*n K 5

要将 Json 数据保存到 DynamoDB,我们使用 put()

var Newparams = {
    TableName: this.SuffleTableName,
       Item: {
        "userId": /* YOUR PRIMARY KEY */,
        "addedAt": /* YOUR SORT KEY */,
        "status": /* Additional Datas */,
       }
}
Run Code Online (Sandbox Code Playgroud)

使用 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
    }
Run Code Online (Sandbox Code Playgroud)

  • 这不会只搜索特定用户吗?您必须在这里传递 UserId 吗? (2认同)
  • 好,谢谢。那不会只返回与该主键相关的值吗?如果主键是唯一的,您只会返回一条用户记录?如何使用一个主键作为查询返回 10 个不同的用户? (2认同)