使用嵌套查询的 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
操作。
所以我的情况是我在 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
操作。