在 DynamoDB 列表中移动项目

Move an item within a DynamoDB list

我在 DynamoDB 中有一个列表 table,我想将项目移动到同一列表中的不同位置,有没有办法在一次更新中完成此操作?

目前,我正在考虑必须读取列表、修改它,然后再将其写回,但我更愿意在一次更新中完成所有操作,有没有办法做到这一点?

编辑以添加示例

所以这里有一些点头数据显示了我想做的事情:

如果数据是这样开始的:

Item: { COLUMN: [ "Element_0", "Element_1", "Element_2", "Element_3" ] }

然后我会给它 fromto 索引,它会移动元素。因此,例如,如果我给它一个 from 索引 0 和 to 索引 2 数据应该像这样结束:

Item: { COLUMN: [ "Element_1", "Element_2", "Element_0", "Element_3" ] }

如果在一次更新中无法做到这一点,则使用默认答案。

读出列表,修改,然后写回。它不优雅,但它有效,而且 也不丑。

尽管它不是原子的,所以任何可以在一次更新中完成的答案都会得到复选标记。

您可以使用 Update Expression 执行此操作,但这有点棘手,因为您没有数据。

基本上,您必须创建一个动态更新语句来设置您要移动的每个值。像这样的东西有效:

aws dynamodb update-item --table-name test --key '{"pk":{"S":"1"}}' --update-expression "SET #list[1] = #list[2], #list[2] = #list[1]" --region us-west-2 --profile jw-test --expression-attribute-names '{"#list": "list"}'

我创建了一个 table,键为 pk,值为 1。更新前的list是这样的:

[
'one',
'two',
'three',
'four'
]

更新后看起来像这样:

[
'one',
'three',
'two',
'four'
]