amazon-web-services - Dynamodb 更新表达式 : "REMOVE #items[0]" appends new list element?

标签 amazon-web-services amazon-dynamodb

我有一个包含列表 items 的 Dynamodb 表。给定指定的 index(使用索引 0 进行测试),我希望从此列表中删除一个元素:

docClient.update({
    TableName: 'cart',
    Key: { 'id': id },
    ReturnValues: 'ALL_NEW',
    UpdateExpression: "REMOVE #items[0]",
    ExpressionAttributeNames : {
        "#items": "items"
    }
},  function(err, data) {   
    })

它不是从项目列表中删除元素 0,而是附加一个新元素( map )(请参阅最后附加元素的附图)

...我做错了什么?另外,我应该如何用一个变量代替上面的 0?我试过:

...
UpdateExpression: "REMOVE #items[:index]",
ExpressionAttributeValues :
":index": index
},
...

...导致错误:Invalid UpdateExpression: Syntax error;标记:\":index\",附近:\"[:index]

非常感谢!

dynamodb table

AWS-SDK:^2.500.0

节点:v10.16.0

-- 编辑: 1) AWS SDK 不支持带 REMOVE 的 ExpressionAttributeValues,因此我必须改为 "REMOVE List["+ listNumber + "]"。 2) 将 UpdateExpression: "REMOVE #items[0]" 更改为 UpdateExpression: "REMOVE #i[0]" for ExpressionAttributeValues : { ":i": items } 正确删除了元素 0;但是,DynamoDB 仍在附加一个新的列表元素 Index : i,其中 i 是我要删除的索引。

这是一个错误吗?

dynamodb appending items

最佳答案

我能够从 cart_items 字段中删除一个元素,如下所示 -

表名- 购物车

这是我的数据-

{
  "id": "1",
  "cart_items": [
    "1", "2"
  ]
}

AWS CLI 查询以从 cart_items 数组中删除第一个元素 -

aws dynamodb update-item \
    --table-name cart \
    --key '{"id":{"S":"1"}}' \
    --update-expression "REMOVE cart_items[0]" \
    --return-values ALL_NEW

关于amazon-web-services - Dynamodb 更新表达式 : "REMOVE #items[0]" appends new list element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57518066/

相关文章:

amazon-web-services - Amazon connect 实例拒绝连接 | 'X-Frame-Options' 至 'sameorigin'

java - 检查 SQS 消息批处理的大小

mySQL长查询锁超时异常

amazon-web-services - 使用 Athena 或 DynamoDB 查询 S3 日志内容

node.js - Node.js 是否有支持二级索引的高级 DynamoDB 模块?

java - 429 使用 aws-sdk 为 s3 对象生成预签名 url 时请求过多

mysql - 从 SQL Server 迁移到 AWS Aurora

windows - DynamoDb SocketException : A socket operation was attempted to an unreachable network

scala - Specs2 整套前后环境设置

java - 从 DynamoDB 保存和删除项目时使用 DynamoDBMapperConfig Clobber 或 Update