amazon-dynamodb - 如何在 DynamoDB 中过滤嵌套数组对象

标签 amazon-dynamodb aws-sdk-nodejs aws-sdk-js

我是 AWS DynamoDB 的初学者,我想使用 SENDTO.emailAddress = "first@first.com"作为 FilterExpression 扫描 DynamoDB。

数据库结构看起来像这样

{
    ID
    NAME
    MESSAGE
    SENDTO[
        {
            name
            emailAddress
        }
    ]
}

样本数据
{
    ID: 1,
    NAME: "HELLO",
    MESSAGE: "HELLO WORLD!",
    SENDTO: [
        {
            name: "First",
            emailAddress: "first@first.com"
        },
        {
            name: "Second",
            emailAddress: "second@first.com"
        }
    ]
}

我想检索与 emailAddress 匹配的文档。我尝试使用过滤器表达式进行扫描,这是我检索数据的代码。我正在使用 AWS Javascript SDK。
let params = {
    TableName : "email",
    FilterExpression: "SENDTO.emailAddress = :emailAddress",
    ExpressionAttributeValues: {
        ":emailAddress": "first@first.com",
    }
}

let result = await ctx.docClient.scan(params).promise();

最佳答案

为了通过 sendto 找到项目属性,你需要知道 nameemailAddress属性值。 DynamoDB 无法仅通过对象中的一个属性(即 email 单独的属性值)找到数据。

包含 函数可用于查找 List 数据类型的数据。

CONTAINS is supported for lists: When evaluating "a CONTAINS b", "a" can be a list; however, "b" cannot be a set, a map, or a list.



使用包含的示例代码:-
var params = {
    TableName: "email",
    FilterExpression: "contains (SENDTO, :sendToVal)",
    ExpressionAttributeValues: {
        ":sendToVal": {
            "name" : "First",
            "emailAddress" : "first@first.com"
        }
    }
}; 

如果您不知道 name 的值和 emailAddress属性,您可能需要重构数据以满足您的用例。

关于amazon-dynamodb - 如何在 DynamoDB 中过滤嵌套数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47294056/

相关文章:

amazon-s3 - 使用 AWS SDK (JS) 进行 s3.selectObjectContent 在 'on' 关键字上出现错误

node.js - 如何在 DynamoDb 描述表中使用 waitUntilTableNotExists

node.js - 适用于 NodeJS 的 AWS Pinpoint 推送通知没有声音

hadoop - 影响长途网络最终一致性的因素有哪些?

amazon-dynamodb - 如何在 DynamoDB 中反向扫描索引?

python-3.x - 无法使用 boto3 从 DynamoDB StringSet 中删除项目

node.js - 使用nodejs和aws遇到403错误

docker - 使用docker容器在Atlassian Bitbucket管道中进行测试

node.js - 如何检查并更新node.js中的AWS dynamoDB项目?

node.js - 如何收听 AWS IOT Thing Shadow 更新