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

如何查询DynamoDB电影示例数据库以按流派检索电影

罗昱
2023-03-14

我是DynamoDB的新手,阅读了开发者指南[1],创建了这个电影数据库[2],我能够轻松地查询数据库中的特定年份和标题,因为它们是主键的一部分。

但我想检索以下两件事,我想知道为什么这些例子似乎没有涉及到:

  1. 从整个表中检索所有类型的列表
  2. 通过提供特定类型检索电影标题

我发现的例子是关于为一个简单字段(比如评级或字符串字段)html" target="_blank">添加一个GSI,但我不知道当我的字段本身是一个列表(比如类型)时,我该怎么做。

[1] https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.JavaScript.html [2] https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/samples/moviedata.zip

这是来自开发者指南电影数据库的示例数据点:

{
    "year" : 2013,
    "title" : "Turn It Down, Or Else!",
    "info" : {
        "directors" : [
            "Alice Smith",
            "Bob Jones"
        ],
        "release_date" : "2013-01-18T00:00:00Z",
        "rating" : 6.2,
        "genres" : [
            "Comedy",
            "Drama"
        ],
        "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
        "plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
        "rank" : 11,
        "running_time_secs" : 5215,
        "actors" : [
            "David Matthewman",
            "Ann Thomas",
            "Jonathan G. Neff"
       ]
    }
}

共有1个答案

鞠隐水
2023-03-14

仅使用给定的数据结构无法实现所需的功能,因为索引只能与顶级字符串、数字和二进制属性一起使用:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html

使用DynamoDB,当您通过复制对数据进行非规范化时,您可以实现这种多对多的关系。例如,您可以使用带有电影标题的分区键(假设在本例中它是唯一的)和排序键类型。然后你重复数据的次数,就像电影属于不同的流派一样。

为了获得所有类型,您可以创建类型属性的全局二级索引。使用相同的索引,您可以查询特定类型和其中的所有电影标题。

AWS文档在此处详细解释了多对多关系:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html

此外,阅读这篇博文可以让您的注意力从规范化关系数据方法转移到使用DynamoDB的不同非规范化方法:https://www.alexdebrie.com/posts/dynamodb-one-to-many/#composite-主键——查询api操作

 类似资料:
  • 问题内容: 我有这样一张table: 如果创建了新记录,并且该记录在同一天被更改了几次,则输出将成为更改后的记录的第一个和最后一个记录;如果同一天对现有记录进行了几次更改,则输出应在第一个更改和当前更改之前改变 例如:如果输入日期为2018年6月1日,则输出应如下所示; 如果输入日期为2018年6月2日,则输出应如下所示; 如果输入日期为2018年6月3日,则输出应为以下内容; 任何帮助深表感谢。

  • 问题内容: 我正在编写一些工具,当对它应用任何查询时,该工具必须检索检索到的数据集的列名。 如果您熟悉phpMyAdmin,您将意识到SQL窗格可以执行查询并显示结果以及列名。我想知道查询会有多困难,它总是产生列名,而幕后的编程实际上是什么?就像它会分析查询,然后从查询中查找表名称,然后首先使用查询检索列名称,然后再检索数据吗? 有什么更好的办法吗? 已更新 对不起,不完整的信息,我想我必须说我在

  • 我有一个Spring批处理程序,它从数据库中读取数据并处理它,并将(使用ItemWriter)插入到数据库中的其他表中。在这里,我使用了一系列针对ItemReader、Item处理机和ItemWriter的SQL查询。 我的要求是将所有这些查询存储在一个具有参数和值格式的表中,并通过一个数据库调用来检索它,然后将其传递给ItemReader或Item处理机或ItemrWriter。因此,如果将来查

  • 问题内容: 这是我的简单表格: 这是我的Express.js /Node.js代码: 我试过或或,等等。它们都不起作用。他们都回来了。 当我更改为Get呼叫时,它可以工作,所以..有什么想法吗? 问题答案: 事情已经改变了再次启动 快速4.16.0 ,您现在可以使用与就像在 快车3.0 。 从 Express 4.0到4.15,* 这是不同的: * 然后: 其余的就像在 Express 3.0中一

  • 1.1.1. 电量查询 1.1.1. 电量查询 RokidOS 提供的电量服务依赖于 Amlogic 电池驱动接口。 电量API RokidOS 提供了一个电池查询接口,可以实时查询当前电量,相关代码路径:robot/external/power_ctrl struct power_state { int status; // 电池状态:BATTERY_STATU

  • 问题内容: 我刚启动Swift,一直在寻找一种检查电池电量的方法。我找到了该资源并一直在使用它,但是由于某种原因似乎无法使它正常工作。 我不太确定如何解决此问题。有任何想法吗? 问题答案: Xcode 11•Swift 5.1 首先只需启用电池监控: 然后,您可以创建一个计算属性以返回电池电量: 电池电量从0.0(完全放电)到1.0(100%充电)。访问此属性之前,请确保已启用电池监视。如果未启用