我有一个名为“类别”的属性,其中包含地图列表。我希望能够使用其唯一ID仅更新其中一张地图。我的数据结构如下:
"EstablishmentID": "12345abc",
"Categories": [
{
"408eec12-2415-45d3-b703-b8ba0d55261c": {
"CategoryName": "Cat11",
"CategoryVisible": true
}
},
{
"586a95ab-e39d-4711-8770-f60dedcf6059": {
"CategoryName": "Cat2",
"CategoryVisible": true
}
}
]
[当我想更新这些类别之一时,我使用SET更新表达式,并且(据我所知)我正在正确输入文档路径。这是我的更新表达式代码:
UpdateItemRequest request = new UpdateItemRequest
{
TableName = "Menu",
Key = new Dictionary<string, AttributeValue> { { "EstablishmentID", new AttributeValue { S = establishmentID.ToString() } } },
ExpressionAttributeNames = new Dictionary<string, string>
{
{"#C", "Categories"},
{"#I", category.CategoryID.ToString()}
},
ExpressionAttributeValues = new Dictionary<string, AttributeValue>
{
{":CategoryToUpdate", new AttributeValue{M=values } }
},
UpdateExpression = "SET #C.#I = :CategoryToUpdate"
};
[当我尝试运行更新时,出现以下错误:
更新表达式中提供的文档路径对于更新无效
对我来说,这似乎找不到对象类别=> [categoryID]。有谁知道我可能无法在列表中找到我的特定类别。
谢谢。李
您不能使用这样的列表和查询。 #C.#I
将引用Categories.408eec12-2415-45d3-b703-b8ba0d55261c
。将格式更改为此:
"EstablishmentID": "12345abc",
"Categories": {
"408eec12-2415-45d3-b703-b8ba0d55261c": {
"CategoryName": "Cat11",
"CategoryVisible": true
},
"586a95ab-e39d-4711-8770-f60dedcf6059": {
"CategoryName": "Cat2",
"CategoryVisible": true
}
}
然后您的查询应该可以使用。