如何在扫描操作中使用 FilterExpression 查询 DynamoDB 中的对象数组 [英] How to Query a Array of objects in DynamoDB using FilterExpression in scan operation

查看:12
本文介绍了如何在扫描操作中使用 FilterExpression 查询 DynamoDB 中的对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How to Query array of objects(workingDays) key containing only "Tue" in dynamoDb with Scan Operation,I have queried using filter Expression but i am getting no results.

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)

        }
    })

推荐答案

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

ExpressionAttributeValues in your query contains String ["S"] as 'key' for value 'Tue', where as in your table, 'workingDays' is a list of map object containing value for day keys.

试试下面的代码:

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);
   }
});

这篇关于如何在扫描操作中使用 FilterExpression 查询 DynamoDB 中的对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆