Amazon dynamodb 对于UpdateExpression语法,更新DynamoDB中的项失败
我的表数据如下所示Amazon dynamodb 对于UpdateExpression语法,更新DynamoDB中的项失败,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我的表数据如下所示 { "id": { "S": "alpha-rocket" }, "images": { "SS": [ "apple/value:50", "Mango/aa:284_454_51.0.0", "Mango/bb:291", "Mango/cc:4" ] }, "product": { "S": "fruit" } } 下面是我更新表的代码。我传递给函数的变量有值pro
{
"id": {
"S": "alpha-rocket"
},
"images": {
"SS": [
"apple/value:50",
"Mango/aa:284_454_51.0.0",
"Mango/bb:291",
"Mango/cc:4"
]
},
"product": {
"S": "fruit"
}
}
下面是我更新表的代码。我传递给函数的变量有值product\u id
hasalpha rocket
,image\u val
has284\u 454\u 53.0.0
和image
hasMango/aa:284\u 454\u 53.0
。
我正在尝试将Mango/aa
的值从284_454_51.0.0
更新到284_454_53.0.0
,但出现错误“更新表达式中提供的文档路径对于更新无效”
def更新球员得分(产品id、图像值、图像):
dynamo=boto3.resource('dynamodb')
tbl=发电机表(“”)
结果=待更新项目(
表达式\属性\名称:{
“#图像名称”=>“图像名称”
},
表达式\属性\值:{
“:image\u val”=>image\u val,
},
关键:{
“产品”=>“水果”,
“id”=>产品标识,
},
返回值:“所有新值”,
表_名称:“奥库斯”,
更新_表达式:“设置图像。#image_val=:image_val”,
}
有没有办法将
Mango/aa
的值更新或替换为完整字符串“Mango/aa:284\u 454\u 51.0.0”
到“Mango/aa:284\u 454\u 53.0.0”
您无法通过匹配字符串来更新列表中的字符串。如果您知道它的索引,您可以通过索引替换字符串的值:
SET images[1] = : image_val
似乎您想要的不是字符串列表,而是另一个映射。因此,您不需要让数据看起来像字符串列表,而是让它看起来像这样,这样您就可以进行所需的更新:
{
"id": {
"S": "alpha-rocket"
},
"images": {
"M": {
"apple" : {
"M": {
"value": {
"S": "50"
}
},
"Mango" : {
"M": {
"aa": {
"S": "284_454_51.0.0"
},
"bb": {
"S": "291"
},
"cc": {
"S": "4"
}
}
}
},
"product": {
"S": "fruit"
}
}
<>我也会考虑把不同的值放在表中不同的“行”中,并使用查询来构建对象。
{
"id": {
"S": "alpha-rocket"
},
"images": {
"M": {
"apple" : {
"M": {
"value": {
"S": "50"
}
},
"Mango" : {
"M": {
"aa": {
"S": "284_454_51.0.0"
},
"bb": {
"S": "291"
},
"cc": {
"S": "4"
}
}
}
},
"product": {
"S": "fruit"
}
}