2017-05-27 60 views
2

如果可能的话寻找这个问题的答案,不寻找重构建议或重新设计,我只需要了解我在这里缺少什么:在dynamodb表中插入一个嵌套的属性数组元素而不检索整个项目

我有一个现有项目中dynamodb:

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

}

在我的代码我要插入另一个嵌套属性到在上面的项阵列CartItems。我找不到检索整个项目然后插入的方法,这可能会占用KB大小。

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

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

回答

1

UpdateExpression属性支持SET操作,SET操作支持list_append函数。由于list_append函数的操作数必须是列表,所以如下所示将新值包含在列表中。

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

希望这有助于

相关问题