在dynamodb表中插入嵌套属性数组元素而不检索整个项

时间:2017-05-27 17:17:39

标签: amazon-dynamodb

如果可能的话,寻找这个问题的答案,而不是寻找重构建议或重新设计,我只需要了解我在这里缺少的其他内容:

我在dynamodb中有一个现有的项目:

{
"CartId": 321,
"UserId": usr555,
"CartItems": [
 {
    "ProductId":59999,
    "Quantity": 1
 },
 {
    "ProductId": 58888,
    "Quantity": 2
 }
 ]

}

在我的代码中我想在上面的项目中的数组CartItems中插入另一个嵌套属性。我无法在不检索整个项目然后插入的情况下找到这样做的方法,这可能相当于KB的大小。

我想要做的就是在现有的嵌套属性中插入单个数组元素,而不必检索项目。

我使用的语言是nodejs,函数是DynamoDB.put。

1 个答案:

答案 0 :(得分:1)

UpdateExpression属性支持SET动作,SET动作支持list_append功能。由于list_append函数操作数必须是list,因此将新值包含在列表中,如下所示。

response = dynamodb_client.update_item(TableName='your_table', 
Key={'CartId':'321'}, 
UpdateExpression='SET CartItems = list_append(CartItems, :val1)',
ExpressionAttributeValues = {':val1':[{'ProductId':12345, 'Quantity': 100}]})

希望这有帮助