我正在尝试为列表追加操作创建一个条件表达式,因此如果列表中已存在包含匹配的
id
属性的项目,它将不会执行追加。例如,假设我有一个如下所示的列表:
[
{
id: "id-one",
size: 4,
color: "blue"
},
{
id: "id-two",
size: 7,
color: "blue"
},
{
id: "id-three",
size: 2,
color: "red"
}
]
我的更新表情是:
SET #list_attribute_name = list_append(if_not_exists(#list_attribute_name, []), :more_items)
但我不知道如何生成一个条件表达式来检查列表中元素的 ID。
除非您知道该项目在列表中的位置,否则您不能执行此操作。您有两个选择:
{
"id-one": {
"id": "id-one",
"size": 4,
"color": "blue"
},
"id-two": {
"id": "id-two",
"size": 7,
"color": "blue"
},
"id-three": {
"id": "id-three",
"size": 2,
"color": "red"
}
}
UpdateExpression='SET #map_attribute_name.#id = :more_items'
ConditionExpression='attribute_not_exists(#map_attribute_name.#id)