【问题标题】:Not able to search on nested property in DynamoDB AWS console无法在 DynamoDB AWS 控制台中搜索嵌套属性
【发布时间】:2016-03-17 04:55:09
【问题描述】:

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

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

但是我无法在设备上扫描和过滤。我正在尝试将过滤器设置为 device.name = 'Xaomi'

{ id: 'jhfdgu75457y8r', 名称:'帕拉格', 设备:{名称:'小米',国家:'中国'} }

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

【问题讨论】:

  • 我也有同样的问题。 ---- 另外,我在代码(nodeJS)中验证了可以过滤嵌套属性。这可以使用 FilterExpressions 来完成。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

DynamoDB 中的所有数据都是stored as either a string, binary or number

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

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

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

【讨论】:

  • 我遇到了类似的问题,您在第一个字段中仅使用列名并在匹配字段中包含嵌套属性和子字符串的示例不起作用。即使在列中搜索嵌套字段名称也不会显示任何结果。
【解决方案2】:

目前无法在控制台上使用。

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

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

在这里得到 AWS 支持团队的确认 - https://forums.aws.amazon.com/thread.jspa?messageID=931016

【讨论】:

    【解决方案3】:

    在过滤器类型“设备”而不是 device.name 并在下拉菜单中选择“包含”而不是“=”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2017-12-23
      • 2019-09-08
      相关资源
      最近更新 更多