gpt4 book ai didi

amazon-web-services - 如何更新 DynamoDB 中的嵌套字段?

转载 作者:行者123 更新时间:2023-12-05 06:03:55 28 4
gpt4 key购买 nike

我定义了一个 DynamoDB 表,它有一个嵌套字段 site。我想在下面的代码中更新字段 site.enable。但是当我运行更新命令时,出现了这个错误:

ValidationException: The document path provided in the update expression is invalid for update`

我应该怎么做才能解决这个问题?

{
TableName: 'MyTable',
Key: {
id: '4b7020d2-2d19-4aeb-7f27e49d5bec',
type: '80422149-c97d-4a1a-7bf20ef57056',
},
UpdateExpression: 'set #site.#siteenable= :siteenable',
ExpressionAttributeValues: {
':siteenable': true,
},
ExpressionAttributeNames: {
'#siteenable': 'enable',
'#site': 'site',
}
}

最佳答案

您没有提到编程语言,所以我将假设我习惯使用:Python。

在 Python 中有两种方法可以做到这一点:

  1. 较低级别的客户端 API,它要求您按照 DynamoDB 的方式格式化数据
def enable_site_with_client():

ddb = boto3.client("dynamodb")
ddb.update_item(
TableName=TABLE_NAME,
Key={
"PK": {"S": "SITE_ENTRY"}
},
UpdateExpression="SET #site.#enabled = :update_value",
ExpressionAttributeNames={
"#site": "site",
"#enabled": "enabled"
},
ExpressionAttributeValues={
":update_value": {"BOOL": True}
}
)
  1. 更高级别的资源 API,允许您使用语言 native 数据结构
def enable_site_with_resource():

ddb = boto3.resource("dynamodb")
ddb.Table(TABLE_NAME).update_item(
Key={
"PK": "SITE_ENTRY"
},
UpdateExpression="SET #site.#enabled = :update_value",
ExpressionAttributeNames={
"#site": "site",
"#enabled": "enabled"
},
ExpressionAttributeValues={
":update_value": True
}
)

我已经测试了这两个,它们都有效。

关于amazon-web-services - 如何更新 DynamoDB 中的嵌套字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66506038/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com