无法在DynamoDB AWS控制台中搜索嵌套属性

par*_*ags 22 amazon-web-services amazon-dynamodb

是否可以从AWS DynamoDB控制台搜索嵌套属性?我能够搜索所有顶级属性,但搜索任何嵌套属性总是导致空结果集.

例如,对于下面提供的文档,我可以在任何顶级字段上扫描和添加过滤器,例如id,name等.

但是我无法扫描,并在设备上进行过滤.我正在尝试过滤器as device.name ='Xaomi'

{id:'jhfdgu75457y8r',名称:'Parag',设备:{name:'Xaomi',country:'China'}}

请注意,我是从AWS控制台执行此操作,而不是任何客户端库.AWS控制台是否允许对嵌套对象进行过滤?

Lud*_*vik 9

现在可以在 PartiQL 编辑器的帮助下在 AWS 控制台中实现。打开 PartiQL 编辑器,然后您可以编写类似SQL的查询:

SELECT * FROM YourTableName WHERE device.name = 'Xaomi'
Run Code Online (Sandbox Code Playgroud)

它在幕后使用扫描,只是为了了解这一点。

有关 PartiQL 的更多信息: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html


F_S*_*O_K 6

DynamoDB 中的所有数据都存储为字符串、二进制或数字

当您使用 SDK 访问 DynamoDB 时,它通常会将这些原始数据转换和取消转换为复杂的数据类型,例如列表和地图。

控制台仅适用于原始数据类型。在这种情况下,您的设备属性被视为字符串,因此您不能通过 device.name 嵌套属性进行过滤。

但是,您可以简单地执行字符串过滤器。例如过滤设备属性,使用 contains 运算符和值"name":"Xaomi"

  • 我遇到了类似的问题,并且您在第一个字段中仅使用列名并在匹配字段中包含嵌套属性和子字符串的示例不起作用。即使在列中搜索嵌套字段名称也不会显示任何结果。 (15认同)

the*_*ver 6

目前在控制台上不可能。

我还在寻找一种解决方案,可以根据嵌套属性的值找到一个项目。

但目前只能通过 SDK 或 CLI 而不能通过控制台。

由 AWS 支持团队确认 - https://forums.aws.amazon.com/thread.jspa?messageID=931016


小智 -4

在过滤器中输入“device”而不是 device.name,然后在下拉列表中选择“Contains”而不是“=”