【问题标题】:GSI with DynamoDB.DocumentElement and Node.JSGSI 与 DynamoDB.DocumentElement 和 Node.JS
【发布时间】:2020-05-10 01:40:51
【问题描述】:

我有一个关于 GSI 的问题。对于使用 DynamoDB 的人来说,这个问题很容易 :)

目前,我正在通过创建博客来了解 AWS/DynamoDB。所以每个帖子都有一个类别。我遇到了一个大问题,如果我想获得所有具有特殊类别的帖子。现在我正在使用扫描并包含一个过滤器。

编辑: 为了创建模型,我使用“dynamodb-toolbox”

我听说我可以申请 GSI 并通过 GSI 搜索获得所有类别的帖子。最大的问题是...我不知道如何创建 GSI,如何在查询宽度 DocumentClient 和 node.js 中使用它

感谢您的帮助!

【问题讨论】:

  • 您的 DynamoDB 数据模型目前看起来如何?
  • ` 架构:{ pk:{ type:'string',别名:'type',默认:'POST'},sk:{ type:'string',别名:'id'}, title: { type: 'string' }, category: { type: 'string' }, description: { type: 'string'}, } `这是来自 dynamo-toolbox 的模型,所以每个帖子都有这些字段

标签: node.js amazon-dynamodb dynamodb-queries aws-sdk-nodejs


【解决方案1】:

我不知道如何创建 GSI

这里是on the documentation,更具体的是here

我遇到了一个大问题,如果我想获取所有具有特殊类别的帖子。现在我正在使用扫描并包含一个过滤器。

在这种情况下,根据您当前的数据模型,您需要配置一个 GSI,其中category 为分区键,id 为排序键,您需要将主键配置为复合主键PK 和 SK 的密钥,如here 所述。

这将允许您query the data by category on that GSI,因为您将类别作为分区键,所以您在执行查询时将点击一个分区。

如何在查询宽度 DocumentClient 和 node.js 中使用它

我建议您先弄清楚这些,并使其独立工作,而不必担心您的编程语言限制。一旦掌握了这一点,您就可以孤立地担心编程语言的挑战。

【讨论】:

  • 好的,谢谢您的帮助!这对我真的很有帮助。我只想问 - 是否可以通过代码创建此索引?还是我应该直接进入 AWS-CLI 中的 DynamoDB 表并自己创建它?
  • “是否可以通过代码创建此索引”:您可以在 AWS 控制台中执行任何您可以通过 AWS CLI 和您的基础设施即代码在自己的代码中执行的操作工具(例如 terraform)。 GSI 创建是您需要根据需要执行一次的操作。所以,我会把它从应用程序中取出,然后在其他地方运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 2016-05-27
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多