AWS DynamoDb - 更新列表中的特定地图 (.NET)
AWS DynamoDb - Updating a specific map in list (.NET)
我有一个名为 "Categories" 的属性,其中包含地图列表。我希望能够使用其唯一 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"
};
当我尝试 运行 我的更新时,我收到以下错误:
The document path provided in the update expression is invalid for update
对我来说,这似乎无法找到对象 Categories => [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
}
}
那么您的查询应该有效。
我有一个名为 "Categories" 的属性,其中包含地图列表。我希望能够使用其唯一 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"
};
当我尝试 运行 我的更新时,我收到以下错误:
The document path provided in the update expression is invalid for update
对我来说,这似乎无法找到对象 Categories => [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
}
}
那么您的查询应该有效。