AWS DynamoDB BatchGetItemRequest 从列表中选择嵌套属性

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

我在 dynamodb 中有以下结构:

{
  "id": 1,
  "prop1": "val1",
  "prop2": "val2"
  "list1": [
    {
      "listProp1": "listVal1",
      "listProp2": "listVal2",
    }
  ]
}

然后我需要选择

"id"
为1、3、10的所有元素。并且我需要从主对象中选择
"prop1"
以及从
"listProp1"
列表中选择
""list1""
。所以我用
BatchGetItemRequest

var keyAttributes = new KeysAndAttributes
{
    Keys =
    {
        { "id", [1, 3, 10] },
    },
    AttributesToGet =
    {
        "prop1",
        "list1.listProp1",
    },
};

var req = new BatchGetItemRequest
{
    RequestItems =
    {
        { "mytable", keyAttributes },
    },
};

var res = await _dynamoDb.BatchGetItemAsync(req, ct)
    .ConfigureAwait(false);

响应成功,但是没有返回

"list1"
,因为主对象中没有
"list1.listProp1"
这样的属性,所以我想知道:有没有办法只选择特定的嵌套属性,或者应该完全获取
"list1"
来自 dynamoDb?

c# .net amazon-web-services amazon-dynamodb
1个回答
0
投票

您没有搜索正确的术语,

"list1.listProp1"
应该是
list1[0].listProp1

您还有另一个问题,AttributesToGet 是遗留问题,您应该使用 ProjectionExpression 代替,并确保正确提供点表示法而不是字符串。

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