DynamoDB上的嵌套属性查询

时间:2019-02-27 20:07:29

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

我在Dynamo上有这样的东西:

{
    "mail": "user@anonymous.com",
    "data": {
        "type": 1
    }
}

我在“邮件”属性上有一个索引,我试图查询使用过滤属性“数据”的指定邮件找到的所有数据。像这样:

const params = {
    TableName: 'tableName',
    IndexName: "mail_index",
    KeyConditionExpression: "#mail = :mail",
    FilterExpression: '#status = :val',
    ExpressionAttributeNames: {
        '#mail': 'mail',
        '#status': 'data.type'
    },
    ExpressionAttributeValues: {
        ':mail': 'user@anonymous.com',
        ':val': {N: 5}
    } 
};

dynamoDoc.query(params, (err, data) => {
    console.log(data);
});

但是我总是得到空洞的结果。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

尝试一下:

const params = {
    TableName: 'tableName',
    IndexName: "mail_index",
    KeyConditionExpression: "#mail = :mail",
    FilterExpression: '#data.#type = :val',
    ExpressionAttributeNames: {
        '#mail': 'mail',
        '#data': 'data',
        '#type': 'type'
    },
    ExpressionAttributeValues: {
        ':mail': 'user@anonymous.com',
        ':val': {N: 5}
    } 
};

由于datatype均为reserved words,DynamoDB需要将两者都转义。