如何通过+其他键之间的字符串查询DynamoDB

问题描述

我正在尝试设计一个满足以下条件的DynamoDB查询

get items by type,category,and date between(date_1,date_2)

我已经在全局二级索引中存储了以下属性

  • 类型(字符串)
  • 类别(字符串)
  • 日期(字符串)

我知道我可以使用between运算符按给定的日期字符串进行查询

gsi_1_pk = 'products' and gsi_1_sk between '2019-01-01T00:00:00.000Z' and '2019-01-01T00:00:00.000Z'

但是在某些情况下,我想查询3个属性,而不仅仅是日期。

因此,我想要一个解决方案,允许我通过所有可能的过滤组合进行查询typecategorydate betweentype + categorytype + date betweencategory + date between type + category + date between

如何将此between操作与GSI中的其他属性结合起来?

解决方法

我最终创建了一个新的全局二级索引,我将date单独存储在排序键中,这使我可以毫无问题地使用between Dynamo操作。

缺点是我必须为这样一个简单的查询创建一个新的GSI。但是正如许多人在这里所说的那样,DynamoDB似乎并不是这项工作的“正确/最佳”工具。