如果可能的话,寻找这个问题的答案,而不是寻找重构建议或重新设计,我只需要了解我在这里缺少的其他内容:
我在dynamodb中有一个现有的项目:
{
"CartId": 321,
"UserId": usr555,
"CartItems": [
{
"ProductId":59999,
"Quantity": 1
},
{
"ProductId": 58888,
"Quantity": 2
}
]
}
在我的代码中我想在上面的项目中的数组CartItems中插入另一个嵌套属性。我无法在不检索整个项目然后插入的情况下找到这样做的方法,这可能相当于KB的大小。
我想要做的就是在现有的嵌套属性中插入单个数组元素,而不必检索项目。
我使用的语言是nodejs,函数是DynamoDB.put。
答案 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}]})
希望这有帮助