Dynamodb如何在项目的列表元素中执行更新?

时间:2018-03-27 10:53:10

标签: java spring-mvc amazon-dynamodb

我将数据存储在list元素中。该列表属性包含多个字段,如年份和名称。有没有什么方法可以删除年份是2018年的行,就像关系数据库一样?

数据以这种方式存储,其中ID是主键,其他一些字段如密码,城市等。以下是数据存储方式。

{
  "q1risk" : "0",
  "q1targets" : [ ]
}
UpdateItem succeeded:
{
  "q2risk" : "100.0",
  "q2targets" : [ {
    "level" : "Basic",
    "year" : "2017",
    "name" : "1",
    "completed" : "0",
    "category" : "US"
  }, {
    "level" : "Basic",
    "year" : "2017",
    "name" : "2",
    "completed" : "0",
    "category" : "US"
  }, {
    "level" : "Basic",
    "year" : "2018",
    "name" : "3",
    "completed" : "0",
    "category" : "US"
  } ]
}

1 个答案:

答案 0 :(得分:0)

取自this answer to a similar question,根据DynamoDB UpdateExpression documentation,您可以使用REMOVE ListAttribute[index]从列表中删除单个元素。

但是,似乎没有办法根据条件有条件地删除列表元素。

最小化读/写吞吐量的最佳选择是:

  1. 查询具有CONTAINS过滤条件和列表属性上的投影表达式的项目。
  2. 如果找到该项,则它至少包含一个要删除的元素,因此请找到要删除的元素的索引。
  3. 使用带有索引的REMOVE从项目列表属性中删除这些元素。