在布尔键上的DynamoDB查询

我是DynamoDB的新手(对于一般的noSQL),并且为了让我的头脑围绕一些概念而挣扎。 有一件事情特别是给我一些问题,这是围绕一个布尔键查询表的问题。

我意识到我不能创build一个布尔键的主要或次要索引,但我不明白我应该如何理想地索引和查询具有以下结构的表;

reportId: string (uuid) reportText: string isActive: boolean category: string 

我希望能够完成以下search:

  1. 直接访问特定报告( reportId的主散列索引)
  2. 列出特定类别的报告(类别上的主要哈希索引)

这些都是直截了当的,但我想要执行另外两个查询;

  1. 列出所有标记为isActive = true的报告
  2. 列出标记为isActive = true的特定类别的所有报告

我的第一种方法是在isActive上创build一个主要的hashkey索引,并使用category ,但是我只能selectStringNumber of Boolean作为键types。

存储isActive作为一个string(保存为“真”而不是布尔真)解决了这个问题,但它使用一个string可怕的布尔属性。

我错过了什么吗? 有一个简单的方法直接查询表的布尔值?

任何build议非常感激。

提前致谢。

       

网上收集的解决方案 "在布尔键上的DynamoDB查询"

我的项目包含了这个特定的场景,并且我遵循了在本地和全局二级索引上使用稀疏索引的DynamoDB最佳实践。 以下是我要用你的例子做的事情:

 Table: reportId (string, hash key) || reportText (string) || isActive (string, marked as "x") || category (string) ActiveReportsIndex (Local Secondary Index): reportID (hash key) || isActive (range key) ActiveReportsByCategoryIndex (Global Secondary Index): category (hash key) || isActive (range key) || reportId 

稀疏索引背后的思想是,只有标记为isActive的报告:“x”才会显示在索引中,因此它们需要的存储和处理比主表要less。 而不是使isActive属性为布尔types,它将始终存储truefalse值,使用报告处于活动状态时使用“x”或任何其他您希望的string,并在报告处于非活动状态时完全删除属性。 说得通?