Как запросить атрибуты карты таблицы Amazon DynamoDB в .net core?

#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 с использованием дочернего атрибута карты не может работать; это одна из таких ситуаций? Если нет, то как, черт возьми, это должно работать?