我在 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?
您没有搜索正确的术语,
"list1.listProp1"
应该是list1[0].listProp1
。
您还有另一个问题,AttributesToGet 是遗留问题,您应该使用 ProjectionExpression 代替,并确保正确提供点表示法而不是字符串。