Допустим, у меня есть две коллекции и в каждой коллекции 10 документов. Каков рекомендуемый способ сделать подкачку, если я хочу извлечь максимум 15 документов?Пейджинг DocumentDB со множеством коллекций
Когда я запускаю код ниже, я получаю 20 результатов. Он начинает просить первый сборник, который returnes 10, а затем второй, который также возвращает 10, но он должен вернуть 5, так как это MaxItemCount 15.
var batches = new List<IEnumerable<T>>();
var feedOptions = new FeedOptions
{
MaxItemCount = 15
};
var docQuery = Client.CreateDocumentQuery<T>(Database.SelfLink, feedOptions)
.Where(predicate).AsDocumentQuery();
do
{
var batch = await docQuery.ExecuteNextAsync<T>();
batches.Add(batch);
} while (docQuery.HasMoreResults);
var docs = batches.SelectMany(b => b).Take(maxItemCount.Value);
return docs;
Я уже пробовал это с таким же результатом. Проблема заключается в том, что данные находятся в нескольких коллекциях. Когда в этом примере (MaxItemCount = 15) он извлек 10 из первой коллекции, он должен получить только 5 из другого, но он также извлекает 10. –
Для этого вы должны управлять итерацией коллекции и поисковым вызовом на стороне клиента , т. е. вызвать client.ResolveForRead() и перечислить собственные ссылки коллекции. Затем внутри каждой коллекции вызовите ExecuteNextAsync() и установите MaxItemCount в Math.Min (maxItemCount.value - batch.Length, 15) –