当前位置: 首页 > 知识库问答 >
问题:

DynamoDB:从主键获取所有排序键

轩辕天佑
2023-03-14

我有一个带有主键和排序键的表;因为这是一个复合键,所以我有多个主键与不同的排序键映射。

如何获取与特定主键关联的所有排序键?

我尝试使用“Get”操作,但这似乎也需要排序键(尽管我正在寻找这些键)。我还研究了“BatchGet”操作,但这是针对多个不同的键,而不是针对具有多个不同排序键的单个主键。

我也尝试过“查询”,但没有成功,但我对这一点了解较少,所以这可能就是解决方案——是这样吗?我还知道,我可以“扫描”整个数据库,并特别查找具有特定主键的所有项目,但如果可能的话,我会尽量避免这种情况。

我正在使用JS并将其用作参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html.

非常感谢。

共有1个答案

琴俊良
2023-03-14

Query()是您想要的。。。

基本上,您只需使用关键字条件HashKey=:hkey查询表(或索引),并保留任何排序关键字条件。。。

在您链接到的文档中,有一部分用于查询修改该示例。。。

var params = {
  TableName: 'Table',
  KeyConditionExpression: 'HashKey = :hkey',
  ExpressionAttributeValues: {
    ':hkey': 'key'
  }
};

var documentClient = new AWS.DynamoDB.DocumentClient();

documentClient.query(params, function(err, data) {
   if (err) console.log(err);
   else console.log(data);
});
 类似资料:
  • 我正在使用Node。js和DynamoDB JavaScript SDK开发。 我有一个表,它使用“ID”作为分区键(散列键),使用“time”作为排序键(范围键)。我想从多分区密钥中获取最新的N个数据。 我可以使用Query从分区键获取最新的N个数据。 但我不知道如何从多分区密钥中获取最新的N个数据。如果我想从10个分区键获取数据,我应该查询10次吗?

  • 我试图从AWS Lambda函数更新DynamoDb表中的一项,但出现以下错误: “errorMessage”:“调用UpdateItem操作时发生错误(ValidationException):提供的键元素与架构不匹配”, 在定义我的表时,我没有定义排序键,我的分区键名为'pipeId',我使用了以下代码: 在没有预先设置排序键的情况下,无法获取或更新项?还是我做错了什么?

  • 问题内容: 表是由其主键本质上排序的吗?如果我有一个在BigInt标识列上具有主键的表,我可以相信查询将始终返回按键排序的数据,还是我明确需要添加“ ORDER BY”。性能差异很大。 问题答案: 数据通过聚簇索引进行物理存储,聚簇索引通常是主键,但不一定是主键。 如果没有ORDER BY子句,则不能保证SQL中的数据具有顺序。当您需要按特定顺序排列数据时,应始终指定ORDER BY子句。如果表已

  • 如何使用Amazon DynamoDB模块获取仅匹配分区键(表有排序键)的所有项目。我正在使用GetItemRequest查询没有排序键。 当我仅使用分区键和GetItemRequest进行查询时,我会遇到以下错误。 <代码>原因:软件。亚马逊。awssdk。服务。发电机B。模型DynamoDbException:提供的关键字元素与架构不匹配(服务:DynamoDb,状态代码:400,请求ID:6

  • 我需要从sybase ase数据库中的所有用户表创建数据字典。我不能安装像赛贝斯PowerDesigner这样的工具,所以我必须使用SQL查询来实现。 我在论坛的帮助下组成了这个查询,以显示表名、列名、数据类型、大小而不是空约束。但是我无法找到该列是否是主键,或者是否是聚集主键的一部分。 这里有人可以帮助我对所需的表进行必要的连接,以获得指示其主键状态的所需标志吗。我已经阅读了syskey和sys

  • 我正在为DynamoDb使用AWS(JS)文档客户端库,并试图从表(分区排序键)中执行。问题是,我想按分区键和任何排序键获取所有项。 如果我没有在中定义sort key,我会得到