我正在使用DynamoDB来存储用户信息。 每个用户都有一张以兴趣爱好为键,文本为值的地图,例如:
{'fishing': 'Its fun!', 'running': 'Its healthy!'}
现在,我要扫描我的表以查找具有特定爱好的用户:
['dancing', 'fishing', 'cooking']
问题:是否可以scan
DynamoDB表来检查映射中的键是否存在?
答案 0 :(得分:0)
如果hobbies属性为StringSet,则可以执行以下扫描:
{
"TableName": "tbl_name",
"FilterExpression": "( contains(hobbies, :hobby1) ) OR ( contains(hobbies, :hobby2) ) )",
"ExpressionAttributeValues": {
":hobby1": {
"S": "dancing"
},
":hobby2": {
"S": "fishing"
},
}
}
答案 1 :(得分:0)
是的,可以扫描DynamoDB表以检查映射中的键是否存在。
假设您在dynamoDB中的条目如下所示:
{
"userId" : 123,
"hobbyMap" : {
"fishing" : "Its fun!",
"running" : "Its healthy!"
}
}
您可以编写的过滤器表达式为:
FilterExpression : "attribute_exists(hobbyMap.dancing) OR attribute_exists(hobbyMap.fishing) OR attribute_exists(hobbyMap.cooking)"