【问题标题】:DynamoDB update inside an array of objects (nodejs)对象数组内的 DynamoDB 更新(nodejs)
【发布时间】:2017-08-20 15:54:28
【问题描述】:

我注意到 DynamoDB 可以在数组中添加和删除项目,但是如果您想专门更新某个对象内的特定项目,如何搜索该项目? 例如: 在 MongoDB 中,您可以搜索 someitem.$.subitem 并更新该特定项目。 有没有办法使用 DynamoDB 做到这一点?

Item: {
  someitem: [
    {
      subitem: "id",
      somevalue: "something"
    }
  ]
}

我会说这是基本功能,但似乎不容易找到(甚至不受支持)

【问题讨论】:

标签: node.js amazon-web-services amazon-dynamodb


【解决方案1】:

AWS 不允许在单个更新请求中对其进行修改,更多信息可在以下答案中找到: updating-a-json-array-in-aws-dynamodb.

他们提出的解决方案是将架构从数组更改为 {},或者实现自定义函数并遍历每个数组并找到要更新的新 id,可以说是编程更新您的 json,然后插入整个对象。

【讨论】:

    【解决方案2】:
    TableName : 'tablename', 
    Key : { id: id}, 
    ReturnValues : 'ALL_NEW',
    UpdateExpression : 'set someitem['+`index`+'].somevalue = :reply_content', 
    ExpressionAttributeValues : { ':reply_content' : updateddata }
    

    通过数组索引编辑数组元素

    【讨论】:

    • 为什么这行得通,但从ExpressionAttributeValues 引用索引却不行?
    • 工作案例'set someitem['+index+'].somevalue = :reply_content'
    猜你喜欢
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2017-05-15
    • 2021-11-27
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多