我在dynamodb上有一个具有以下结构的项目寄存器:
{
"OwnerID":"12312wqeq",
"license":"23423werwegdf",
"MaintenanceList":{
"10-11-2018":{
"garage" : "lopcars",
"city" : "NY",
"country" "USA",
"location" : "1929-1927 Fulton St Brooklyn"
}
}
}
我需要向列表中添加一个新的维护,并且我尝试了以下操作:
response=table.update_item(
Key={
"OwnerID":"12312wqeq",
"license":"23423werwegdf",'
}
,UpdateExpression = "SET #d1=:dt",
ExpressionAttributeValues = {
':dt' : "12-11-2019":{
"garage" : "Crazycars",
"city" : "NY",
"country" "USA",
"location" : "120 E Suffolk Ave Central Islip"
}
}
},
ExpressionAttributeNames={
'#d1' : 'MaintenanceList'
},
ReturnValues="UPDATED_NEW"
)
但是覆盖属性MaintenanceList,更新后我需要它看起来像这样:
{
"OwnerID":"12312wqeq",
"license":"23423werwegdf",
"MaintenanceList":{
"10-11-2018":{
"garage" : "lopcars",
"city" : "NY",
"country" "USA",
"location" : "1929-1927 Fulton St Brooklyn"
},
"12-11-2019":{
"garage" : "Crazycars",
"city" : "NY",
"country" "USA",
"location" : "120 E Suffolk Ave Central Islip"
}
}
}
答案 0 :(得分:0)
SET MaintenanceList=:dt
表达式确实替换了称为MaintenanceList的属性的值。如果您希望将此属性的内容作为哈希表并添加到哈希表中,则需要使用嵌套属性路径进行更新,如in this DynamoDB documentation所述。例如,执行类似SET #d1.#date=:dt
的操作。
但是,请注意,将哈希表保留在单个属性的值内是有问题的-哈希表的总大小受到严格限制(最大为400KB),并且每次读取或写入一小部分内容时,您都需要为整个项目支付费用它。