我有这样的数据
{
"ZipCode": 896754,
"TruckDetails":[
{
"truckName":"classic",
"TruckType":"mini truuck",
"nos":12
},
{
"truckname":"retro",
"TruckType":"box",
"nos":9
}
]
},
{
"ZipCode": 12234,
"TruckDetails":[
{
"truckName":"test",
"TruckType":"van",
"nos":2
}
],
}
现在,我想通过TruckType键过滤数据,通过使用包含表达式,它每次都返回空值,因为数组有一个键和一个值,我如何通过TruckDetails内部的键进行过滤
1条答案
按热度按时间wf82jlnq1#
这不是你可以在DynamoDB中做的事情。您实际上是在询问DynamoDB某个Map列表中是否包含字符串值,但DynamoDB检查的是Map,而不是Map中的字符串。
您可以这样做,这将在您检查列表中的Map时返回一个响应。
为了克服这个问题,您应该将数据反规范化,以便每个项目都有一辆卡车,而不是一个项目有一个卡车列表:
| PK| SK|类型|名称|
| --|--|--|--|
| 896754 | 12 |经典|小型特鲁克|
| 896754 | 9 |复古|框|
然后你在Type上创建一个索引,你可以得到一个与这些类型匹配的卡车列表。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html