AWS DynamoDb-更新列表(.NET)中的特定地图

问题描述 投票:1回答:1

我有一个名为“类别”的属性,其中包含地图列表。我希望能够使用其唯一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]。有谁知道我可能无法在列表中找到我的特定类别。

谢谢。李

.net list amazon-web-services amazon-dynamodb updating
1个回答
1
投票

您不能使用这样的列表和查询。 #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
  }
}

然后您的查询应该可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.