我的表格数据如下所示
{
"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_id
hasalpha rocket
,image_val
has284_454_53.0.0
和image
hasMango/aa:284_454_53.0
。我正在尝试将Mango/aa
的值从284_454_51.0.0
更新到284_454_53.0.0
,但出现错误“更新表达式中提供的文档路径对更新无效”
def update_player_score(product_id, image_val, image):
dynamo = boto3.resource('dynamodb')
tbl = dynamo.Table('<TableName>')
result = tbl.update_item(
expression_attribute_names: {
"#image_name" => "image_name"
},
expression_attribute_values: {
":image_val" => image_val,
},
key: {
"product" => "fruit",
"id" => product_id,
},
return_values: "ALL_NEW",
table_name: "orcus",
update_expression: "SET images.#image_val = :image_val",
}
是否有方法将Mango/aa
的值更新或将完整字符串“Mango/aa:284_454_51.0.0”
替换为“Mango/aa:284_454_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"
}
}
我还会考虑将不同的值放在表中的不同“行”中,并使用查询来构建对象。
我试图更新DynamoDB表中的项目。我写的代码正在更新项目,但是当我添加一个标题为“源代码/目标”的列时,它会给出一个“验证异常”异常。 用于更新的代码- 我得到的错误是- 调用UpdateItem操作时发生错误(ValidationException):无效的UpdateExpression:语法错误;标记:\“/\”,靠近:\“源/目标” 这个怎么解决?
我目前在dynamodb表中有一个列表属性: 我想使用UpdateExpression向Recommensions属性添加新项 我设法将一个对象映射添加到推荐列表中,但当我想添加另一个对象映射时,它将替换推荐列表中的对象。 我还尝试使用外接程序UpdateExpression 但我得到了一个错误
问题内容: 我一直在尝试找出如何更新dynamoDB中的项目,但没有成功。 我知道如何添加和删除项目,但不更新。 这是我的代码: 问题答案: 看来您正在尝试使用Expression更新项目,在这种情况下,您不正确。无论是和用于占位符代替你的表达。 我想如果您想为某项设置属性,您的代码将类似于以下内容: 这将更新一个看起来像这样的项目: 对此:
这看起来应该很简单,但我没有找到任何例子或留档。我有一个看起来像这样的Dynamodb表: 记录1:{姓名、电子邮件、项目[{product}、{item2}、{item3]} 记录2:(姓名、电子邮件、项目[{product}、{item2}、{item3]} 我需要能够更新items元素,即更新记录1中的item1对象。我可以通过硬编码list数组元素使用以下代码来实现这一点,但我不知道如何将
在文档之后,我尝试创建一个update语句,该语句将更新或添加dynamodb表中的一个属性(如果不存在)。 我在试这个 我得到的错误是: 如果有人做了类似于我正在努力实现的事情,请分享例子。