使用嵌套查询的 DynamoDB GetBatch 操作

DynamoDB GetBatch operation with nested query

所以我的情况是我在 AWS DynamoDB table 用户中有以下 JSON 数据:

[{
        "name": "data1",
        "addresses": [{
                "city": "Mumbai",
                "state": "Maharashtra"
            },
            {
                "city": "Chennai",
                "state": "Tamil Nadu"
            }
        ]
    },
    {
        "name": "data2",
        "addresses": [{
            "city": "Amritsar",
            "state": "Punjab"
        }]
    }
]

现在我需要获取拥有孟买和阿姆利则等城市的所有用户。那么我应该如何创建一个查询来获得这个结果。

我尝试使用嵌套查询进行扫描,并使用 GetBatch 按多个值进行搜索。但是一起做这件事并没有发生。有人可以阐明这个问题吗?我正尝试在 AWS AppSync 上执行此操作。

谢谢!!!

很遗憾,DynamoDB 不支持以这种方式查询嵌套属性。

您通过将地址存储在复杂属性中,为用户和地址之间的一对多关系建模。这是模拟一对多关系的常见模式。这种模式的缺点是您不能支持任何通过地址获取用户的访问模式。

相反,您需要以支持按地址获取用户的方式对一对多关系建模。理想情况下,地址将内置到主键中,以便您可以执行快速 query 操作。