当前位置: 首页 > 知识库问答 >
问题:

更新dynamodb列表项

上官思博
2023-03-14

这看起来应该很简单,但我没有找到任何例子或留档。我有一个看起来像这样的Dynamodb表:

记录1:{姓名、电子邮件、项目[{product}、{item2}、{item3]}

记录2:(姓名、电子邮件、项目[{product}、{item2}、{item3]}

我需要能够更新items元素,即更新记录1中的item1对象。我可以通过硬编码list数组元素使用以下代码来实现这一点,但我不知道如何将项目编号传递到更新表达式中:

{
"version" : "2017-02-28",
"operation" : "UpdateItem",
"key" : {
    "id" : { "S" : "${context.arguments.input.id}" }
},
"update" : {
    "expression" : "SET #items[0].#product= :productVal",
    "expressionNames" : {
        "#product": "product",
    },
    "expressionValues" : {
        ":productVal": { "S" : "${context.arguments.input.product}" },
    }
}

共有1个答案

张森
2023-03-14

你有没有试过这样的方法:

"update" : {
    "expression" : "SET #items[:idx].#product= :productVal",
    "expressionNames" : {
        "#product": "product",
    },
    "expressionValues" : {
        ":productVal": { "S" : "${context.arguments.input.product}" },
        ":idx": { "N" : 0 }
    }
}
 类似资料:
  • 因此,我在DynamoDB中有一项: 我想添加一个新的属性到上述项目,属性是: 现在,我在JS中使用AWS-SDK这样做: 但是,我得到一个错误: ExpressionAttributeValue包含无效值:一个或多个参数值无效:AttributeValue不能包含key:newAttr的空字符串 所以如果我是这样就可以了,但我不希望这个新属性是一个字符串,我希望它是一个列表。 那么我做错了什么?

  • 我试图更新DynamoDB表中的项目。我写的代码正在更新项目,但是当我添加一个标题为“源代码/目标”的列时,它会给出一个“验证异常”异常。 用于更新的代码- 我得到的错误是- 调用UpdateItem操作时发生错误(ValidationException):无效的UpdateExpression:语法错误;标记:\“/\”,靠近:\“源/目标” 这个怎么解决?

  • 是否有一种方法可以看到这些错误发生的地点/时间?我应该创建一个Lambda函数来处理这个吗?有这方面的例子吗?谢了。

  • 目前,我正在用一个查询检查该项是否存在,然后使用put或updateItem,我想更改它并对DDB进行一次调用。我想进行一个将更新或创建项目的查询。 下面是我的项目的一个例子: 项目类型: 如果项目存在,我想推送一个新项目,比如{papa:'dsfadsf'}(永远不要修改fa映射内的现有项目),并修改pa映射内的finish值 这是更新后的项目: 这是我尝试的,但不起作用

  • 我正在使用DynamoDB,我需要更新多条记录上的特定属性。用伪语言编写我的需求时,我希望执行这样一个更新:“update table persons set relationshipStatus='where personKey in(key1,key2,key3,...)”(假设personKey是DynamoDB表中的键)。 换句话说,我想用一个In子句进行更新,或者我想可以称之为批处理更新