我有一个包含列表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
,而是附加了一个新元素(地图)(请参阅最后一个附加元素的附件图片)
...我在做什么错?另外,我应该如何用一个变量代替上面的0?我尝试过:
...
UpdateExpression: "REMOVE #items[:index]",
ExpressionAttributeValues :
":index": index
},
...
...导致错误:Invalid UpdateExpression: Syntax error; token: \":index\", near: \"[:index]
非常感谢您!
AWS-SDK:^ 2.500.0
节点:v10.16.0
-
编辑:
1)AWS SDK不支持将ExpressionAttributeValues
与REMOVE一起使用,因此,我必须"REMOVE List[" + listNumber + "]"
。
2)将UpdateExpression: "REMOVE #items[0]"
更改为UpdateExpression: "REMOVE #i[0]"
ExpressionAttributeValues : { ":i": items }
正确删除了元素0;但是,DynamoDB仍将附加一个新列表元素Index : i
,其中我是要删除的索引。
这是一个错误吗?
答案 0 :(得分:1)
我能够从cart_items
字段中删除一个元素,如下所示-
表名- cart
这是我的数据-
{
"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