DynamoDB更新对象数组(nodejs)

spa*_*900 8 amazon-web-services node.js amazon-dynamodb

我注意到DynamoDB可以添加和删除数组中的项目但是如果要专门更新该项目,如何搜索对象内的特定项目?例如:在MongoDB中,您可以搜索someitem.$.subitem并更新该特定项目.有没有办法如何使用DynamoDB执行此操作?

Item: {
  someitem: [
    {
      subitem: "id",
      somevalue: "something"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

Suk*_*gha 5

TableName : 'tablename', 
Key : { id: id}, 
ReturnValues : 'ALL_NEW',
UpdateExpression : 'set someitem['+`index`+'].somevalue = :reply_content', 
ExpressionAttributeValues : { ':reply_content' : updateddata }
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么这可行,但引用“ExpressionAttributeValues”中的索引却不起作用? (3认同)

Ale*_*aru 4

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

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