如何在扫描操作中使用FilterExpression查询DynamoDB中的对象数组

RAH*_*SRV 7 amazon-dynamodb aws-lambda dynamodb-queries

在此输入图像描述

如何使用扫描操作查询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)

        }
    })
Run Code Online (Sandbox Code Playgroud)

Amr*_*ngh 2

查询中的ExpressionAttributeValues包含字符串 ["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);
   }
});
Run Code Online (Sandbox Code Playgroud)