【发布时间】:2023-02-10 00:46:42
【问题描述】:
我正在尝试从 DynamoDB 加载数据。 我使用 FilterExpression 和 KeyExpression。 如果我在顶层按简单值搜索,一切正常。 但是,当我尝试按嵌套地图值过滤记录时,我得到 0 条记录。
CurrentCase 是对象,Assignments 是Dictionary,Setup 是Enum。
这是我的代码:
`Expression filterExpression = new ();
filterExpression.ExpressionAttributeNames["#Setup"] = "CurrentCase.Assignments.Setup";
filterExpression.ExpressionAttributeValues[":userId"] = userId;
filterExpression.ExpressionStatement = "#Setup = :userId";`
我尝试了另一种方法,没有帮助。 (WHERE CurrentCase.Assignments['Setup'] = 'Id' 在 PartyQL 中有效):
`Expression filterExpression = new ();
filterExpression.ExpressionAttributeNames["#Setup"] = "CurrentCase.Assignments['Setup']";
filterExpression.ExpressionAttributeValues[":userId"] = userId;
filterExpression.ExpressionStatement = "#Setup = :userId";`
这就是我调用查询的方式
var queryOperationConfig = new QueryOperationConfig
{
PaginationToken = paginationToken,
Limit = pageSize,
IndexName = GlobalIndexNames.Cases,
KeyExpression = keyExpression,
FilterExpression = filterExpression
};
Search search = _dbContext.GetTargetTable<CaseEntity>().Query(queryOperationConfig);
List<Document> documents = await search.GetNextSetAsync(cancellationToken);
我希望此请求返回 CurrentCase.Assignments['Setup'] 等于 userId 的所有记录
【问题讨论】:
标签: c# .net amazon-web-services amazon-dynamodb