gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:18:25 27 4
gpt4 key购买 nike

我是 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com