首页 > 解决方案 > DynamoDB 按嵌套数组查询

问题描述

我在 DynamoDB 中有一个 Companies 表,如下所示:

company: {
  id: "11",
  name: "test",
  jobs: [
    {
      "name": "painter",
      "id": 3
    },
    {
      "name": "gardner"
      "id": 2
    }
  ]
}

我想做一个扫描查询,让所有在他们的工作数组中拥有“画家”工作的公司

我正在使用 python 和 boto3

我尝试过这样的事情,但没有奏效

jobs = ["painter"]
response = self.table.scan(
            FilterExpression=Attr('jobs.name').is_in(jobs)
        )

请帮忙。谢谢。

标签: pythonamazon-dynamodbboto3

解决方案


看起来这通常可能不可行,但是该链接中应用的方法可能仍然有用。如果您知道所有数据的作业数组的最大长度,则可以为每个用 OR 链接的索引创建一个表达式。值得注意的是,我找不到处理地图和列表扫描表达式的文档,所以我真的不能说你是否还需要检查你是否越界。


推荐阅读