Я пишу запрос Dynamo Db. NET с обоими «Пределом» и «Выражением фильтра», как показано ниже:
var search = testTable.Query(new QueryOperationConfig
{
Filter = new QueryFilter("Name", QueryOperator.BeginsWith, "B"),
IndexName = "IsActive-gsi",
Limit = 5,
PaginationToken = paginationToken,
});
Я ожидаю, что сначала должно быть оценено выражение фильтра, а затем предельное условие применяется к отфильтрованному результату. Но запрос, кажется, работает по-другому. То есть сначала применяется условие Limit, а затем к ограниченному результату применяется выражение фильтра. Из-за этого я не получаю ожидаемого результата.
Например, скажем, у меня есть 10 строк в таблице (только один столбец типа строки). Скажем, первые 5 строк начинаются с буквы «А», а затем 6-й ряд начинается с буквы «В». Я добавил Limit как 5 и фильтровал выражение как "BeginsWith ('B')", как показано выше в запросе. Я ожидаю получить хотя бы один результат (6-я строка), но запрос возвращает ноль результатов.
Мой вопрос: мой запрос неправильный или Dynamo DB работает таким образом? Если это работает таким образом, то как обойти эту проблему, то есть сначала применить выражение фильтра ко всем строкам, а затем применить условие ограничения, как в одном обращении к базе данных?