#c# #amazon-web-services #.net-core #amazon-dynamodb #dynamodb-queries
Вопрос:
Мне нужно извлечь элемент из моей таблицы Amazon DynamoDB на основе дочерних атрибутов типа карты. Схема таблицы (сокращенная) выглядит следующим образом:
{
"Id": {
"N": "1234567"
},
"InspectionDate": {
"S": "2020-05-04T20:42:35.000Z"
},
"Report": {
"M": {
"WoId": {
"N": "3456765"
},
"Category": {
"L": [...]
}
},
"InspectionRequestId": {
"N": "682635"
}
}
Мне нужно извлечь элементы из таблицы, соответствующие предоставленному WoId, который является типом номера на карте «Отчет».
var searchByRequestId = _context.FromQueryAsync<IpwebInspection>(new QueryOperationConfig()
{
IndexName = "InspectionRequestId-index",
Filter = new QueryFilter(nameof(IpwebInspection.InspectionRequestId), QueryOperator.Equal, inspectionRequestId)
});
var inspectionFetchdByRequestId = await searchByRequestId.GetRemainingAsync(); // If provided with a valid InspectionRequestId, this works perfectly
var searchByWoId = _context.FromQueryAsync<IpwebInspection>(new QueryOperationConfig()
{
IndexName = "Report.WoId-index",
Filter = new QueryFilter(nameof(IpwebInspection.Report.WoId), QueryOperator.Equal, woId)
});
var inspectionFetchdByWoId = await searchByWoId.GetRemainingAsync(); // Throws exception with message "Either the KeyConditions or KeyConditionExpression parameter must be specified in the request."
Таким образом, исключение, которое я в настоящее время получаю, говорит о том, что мне нужно добавить условия ключа или выражение условия ключа, но я понятия не имею, где это сделать. Я пробовал несколько разных способов сделать это, и ни один из них не сработал. Я видел пару ресурсов, утверждающих, что — при определенных условиях — запрос таблицы DynamoDB с использованием дочернего атрибута карты не может работать; это одна из таких ситуаций? Если нет, то как, черт возьми, это должно работать?