在AWS控制台上使用DynamoDB过滤器处理嵌套属性

14

我在 DDB 中有一个地图,其中包含各种嵌套属性。该地图本身称为“state”,其中包含名为“prop”的嵌套属性。

我想要过滤所有具有在 prop 中“包含”(在下拉列表中)X 的结果。

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

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

我似乎除了主键无法按任何其他方式进行过滤。任何嵌套过滤或对其他列的过滤都会返回0个结果(明显存在一些结果)。

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

请问有人能够提供在AWS控制台中通过map进行DDB过滤的示例吗?

非常感谢。


2
可能不太可能 https://dev59.com/-1oV5IYBdhLWcg3wmPpH#48792713 - webbower
如果“state”是保留字,那么我认为#state.prop应该可以工作! - Abdelrahman Maharek
我真的很想在这里帮助你(这是一个高票问题,但没有答案),但我并没有理解你的用例。你能否请举出一个具体的项目示例,并说明其结构?特别是我不明白“prop”是一个映射、列表还是什么,以及每个项目是否有一个“prop”或同一项目内不同元素有多个“prop”的情况。 - Nadav Har'El
1个回答

1
我认为最整洁的方法是将映射内的值分离到根文档的字段中(在分区和排序键旁边),然后创建全局二级索引(GSI)或本地二级索引(LSI),具体取决于您想如何使用它。然后,您可以使用查询操作在索引中搜索文档,并从那里访问代码中的其余映射属性(在这种情况下,您可以将该字段命名为stateProof)。
有一个this线程详细介绍了在扫描操作中使用FilterExpression的能力,但如果DDB中有大量文档,则我认为这相当昂贵,但它可能比添加新索引和更新现有DDB文档格式要容易得多。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接