【问题标题】:Using DynamoDB Filter on AWS Console for nested attribute使用 AWS 控制台上的 DynamoDB 过滤器进行嵌套属性
【发布时间】:2020-01-22 00:12:58
【问题描述】:

我在 DDB 中有一个地图,其中包含各种嵌套属性。地图本身被称为“状态”,并在其中有一个称为“道具”的嵌套属性。

我想过滤所有“包含”(在下拉菜单中)X 的结果。

不幸的是,我尝试了各种方法,例如:

state.prop "CONTAINS" X
state.#prop "CONTAINS" X

除了主键之外,我似乎无法过滤任何东西。任何类型的嵌套过滤器,或任何其他列上的过滤器都会返回 0 个结果(当某些肯定存在时)。

大多数示例是基于代码或 CLI,而不是 DDB UI。

请有人提供一个在 AWS 控制台中通过 DDB 上的地图进行过滤的示例。

非常感谢。

【问题讨论】:

  • 如果 'state' 是保留字,那么我认为 #state.prop 应该可以工作!
  • 我真的很想在这里帮助你(这是一个投票率很高的问题,没有答案),但我只是不明白你的用例。您能否展示一个项目的具体示例以及它的结构?特别是我不明白“道具”是地图、列表还是什么,以及每个项目是否有一个“道具”或同一项目中不同元素的多个“道具”。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

我认为最简洁的方法是将映射内的值分隔到根文档上的一个字段中(在分区和排序键旁边),然后创建一个全局二级索引 (GSI) 或一个本地二级索引(LSI) 取决于您要如何使用它。然后,您可以使用 Query 操作来搜索文档的索引,并从那里访问代码中的其余地图属性(在这种情况下,您可以将字段命名为 stateProof)。

this 线程详细说明了在 Scan 操作中使用 FilterExpression 的能力,但是我认为如果 DDB 中有很多文档,这会非常昂贵,但它可能比添加新索引和更新要容易得多现有的 DDB 文档格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多