【问题标题】:How to Query a Array of objects in DynamoDB using FilterExpression in scan operation如何在扫描操作中使用 FilterExpression 查询 DynamoDB 中的对象数组
【发布时间】:2019-01-02 07:01:32
【问题描述】:

如何使用扫描操作在 dynamoDb 中查询仅包含“Tue”的对象数组(workingDays)键,我使用过滤器表达式进行了查询,但没有得到任何结果。

var queryData = {
        TableName: tableName,
        FilterExpression: "contains (workingDays, :dayVal)",
        ExpressionAttributeValues: {
            ":dayVal": {
                S:"Tue"
            }
        }
    };

    console.log("getParams ==>", queryData)
    dynamodb.scan(queryData, function (err, details) {
        if (err) {
            console.log(err, err.stack); // an error occurred
            callback(err, null)
        }
        else{
           callback(null, details)

        }
    })

【问题讨论】:

    标签: aws-lambda amazon-dynamodb dynamodb-queries


    【解决方案1】:

    ExpressionAttributeValues 在您的查询中包含 String ["S"] 作为值 'Tue' 的 'key',其中在您的表中,'workingDays' 是一个列表包含日期键值的地图对象。

    试试下面的代码:

    var queryData = {
        TableName: tableName,
        ExpressionAttributeNames: {
             "#workingDays": "workingDays",
        },
        FilterExpression: "contains (#workingDays, :dayVal)",
        ExpressionAttributeValues: {
          ":dayVal": {
              "day":"Tue"
          }
       }
    };
    
    console.log("getParams ==>", queryData)
    
    docClient.scan(queryData, function (err, details) {
        if (err) {
            console.log(err, err.stack); // an error occurred
           // callback(err, null)
        }
        else{
           // callback(null, details)
           console.log(details);
       }
    });
    

    【讨论】:

    • 感谢 Amrit 朋友的回复,我尝试了您的解决方案,但它抛出错误“在 params.ExpressionAttributeValues[':dayVal'] 中找到意外的键 'day'”
    • 我已经使用您的表数据模型(将列 workingDays 作为对象列表)执行了上面的代码,它对我有用,您可以在这里粘贴您得到的异常跟踪
    • 我一直在寻找一种适用于具有多个属性的地图的解决方案,但您只想搜索一个属性。 [{"day": "Mon", "time": 4}, {"day": "Tue", "time": 4}] 然后搜索 {"time": 4}
    猜你喜欢
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 2021-03-06
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多