#.net #amazon-dynamodb #limit
#.net #amazon-dynamodb #ограничение
Вопрос:
смотрю вокруг уже около недели и ничего не могу найти, поэтому я собираюсь опубликовать это.
Работаю над проектом. Я могу запросить свой индекс DynamoDB, но, похоже, предельные параметры в моем запросе не работают. Любая помощь?
var request = new QueryRequest
{
TableName = "exampleTable",
IndexName = "exampleIndex",
Limit = 3,
ExclusiveStartKey = lastKeyEvaluated,
ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
{ ":val", new AttributeValue { S = "Yes" } },
{ ":v_1", new AttributeValue { N = "0" }}
},
KeyConditionExpression = "Active= :val and Amount > :v_1",
ProjectionExpression = "Active, Amount",
ScanIndexForward = false
};
У меня в таблице 6 элементов. (Прототипирование более крупного проекта), один из которых имеет отрицательное «Количество». Так что один из них отфильтровывается. Однако я по-прежнему получаю 5 ответов, а не только 3. Кажется, что-то не так с моими предельными параметрами. Любая помощь?
Спасибо!
Комментарии:
1. я думаю, что это должно быть max-items вместо limit docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html
2. Похоже, это для CLI. Похоже, что он не передается вместе с SDK. Но я ценю комментарий.
Ответ №1:
Хорошо, круто, так что в основном проблема была не в структуре моего запроса, а в фактической обработке моего queryasync. В то время как я печатал информацию до того, как был оценен окончательный ключ, теперь я вызвал свой метод печати после оценки окончательного ключа.
Client.QueryAsync(request, (result) => {
if (result.Exception == null)
{
//previous spot for the foreach loop and the print method.
lastKeyEvaluated = result.Response.LastEvaluatedKey;
if (lastKeyEvaluated != null amp;amp; lastKeyEvaluated.Count != 0)
{
foreach (Dictionary<string, AttributeValue> item
in result.Response.Items)
{
PrintItem(item);
}
Query(lastKeyEvaluated);
}
else
{
Debug.Log("last one");
}
}
else
{
Debug.Log(result.Exception);
}
});