You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅当列表不含指定值时更新DynamoDB条目异常排查

DynamoDB列表添加元素去重问题解决

你的代码存在关键逻辑错误:ExpressionAttributeValues中:i被定义为数组[new_value],但contains函数是用来检查列表中是否存在单个元素,而非数组。这就导致即使MyList里已经有new_value这个元素,contains(MyList, :i)实际检查的是列表里有没有[new_value]这个数组,自然返回false,加上NOT后条件判定成立,更新执行后就会出现重复值。

修正后的代码

核心是将:i设为单个值,在UpdateExpression里再把它包装成数组传递给list_append:

var params = {
  TableName: "table_name",
  Key: {
    PartKey: "part_key",
    SortKey: "sort_key"
  },
  UpdateExpression: "SET MyList = list_append(MyList, [:i])",
  ConditionExpression: "NOT contains(MyList, :i)",  
  ExpressionAttributeValues: {
    ":i": new_value  // 此处改为单个值,而非数组
  } 
}

修改后,ConditionExpression会正确检查MyList中是否已存在目标元素,只有当元素不存在时,才会通过list_append将其作为单个元素追加到列表末尾,彻底避免重复添加问题。

内容的提问来源于stack exchange,提问作者Sébastien Serre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:19:58