#.net #azure #azure-cosmosdb
#.net #azure #azure-cosmosdb
Вопрос:
Я увидел, что с новым .NET SDK мы можем возвращать stream из запроса, поэтому я пытаюсь это сделать, чтобы избежать сериализации / десериализации и сэкономить некоторое время.
Но проблема заключалась в том, что если мой запрос вернет более 8 тысяч записей, я потеряю записи, потому что все время максимальное количество элементов составляет около 7800. Есть ли способ увеличить это, потому что я не смог найти максимальное количество элементов, которые запрос может вернуть за одну итерацию? Я не хочу повторять ответ, также я не использую токен продолжения, я просто хочу отбросить ответ в виде потока.
Ответ №1:
Я предполагаю, что GetItemStreamIterator — это метод, который вы должны использовать для запроса потока.Это запускает итератор для перебора всех элементов для контейнера в качестве исходного CosmosResponseMessage
Это набор параметров, которые вы можете запросить к нему.
Параметры
maxItemCount — Обнуляемый (необязательно) Максимальное количество элементов, возвращаемых в рамках запроса
continuationToken- строка (необязательно) Токен продолжения в службе Azure Cosmos DB.
Варианты запросов- CosmosItemRequestOptions (необязательно) Параметры для запроса элемента запрашивают CosmosQueryRequestOptions
public class ToDoActivity{
public string id {get; set;}
public string status {get; set;}
}
CosmosResultSetIterator setIterator = this.Container.Items.GetItemStreamIterator();
while (setIterator.HasMoreResults)
{
using (CosmosResponseMessage iterator = await setIterator.FetchNextSetAsync())
{
using (StreamReader sr = new StreamReader(iterator.Content))
{
string content = await sr.ReadToEndAsync();
}
}
}
Вы пробовали передавать maxcount (более 8k) в запросе. Посмотрим, поможет ли это.
Примечание: Всегда полезно иметь continuationtoken в запросе, чтобы иметь больше контроля.
Комментарии:
1. Привет, @Mohil Спасибо за твой ответ. Да, я пытался установить значение MaxItemCount больше 8 кб, но все равно оно застряло на каком-то значении 7 кб. Я создаю функцию Azure, которая будет оболочкой для cosmos db, и я не очень доволен временем отклика (8 МБ ответа возвращается за 4-5 секунд), поэтому я пробую некоторые другие подходы для сокращения времени. Еще раз спасибо.