AWS DynamoDB扫描|扫描映射中是否存在键数组

时间:2019-02-15 14:33:35

标签: javascript amazon-web-services amazon-dynamodb

我正在使用DynamoDB来存储用户信息。 每个用户都有一张以兴趣爱好为键,文本为值的地图,例如:

{'fishing': 'Its fun!', 'running': 'Its healthy!'}

现在,我要扫描我的表以查找具有特定爱好的用户:

['dancing', 'fishing', 'cooking']

问题:是否可以scan DynamoDB表来检查映射中的键是否存在?

2 个答案:

答案 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)"