При запросе большой коллекции документов вы не хотите заполнять память. Используя драйвер MongoDB C#, я прочитал, что здесь пригодится ForEachAsync. Хотя у меня много мелких документов. Итак, мой вопрос
Делает ли ForEachAsync (1) обращение к БД туда и обратно для каждого документа ИЛИ (2) буферизует документы пакетами и выполняет итерацию по мере их поступления?
Похоже, что сценарий 1 вызовет много ожиданий запроса/ответа, а также большую нагрузку на БД. Я предполагаю, что он реализован как 2, но тогда каково наихудшее использование памяти? Устанавливает ли драйвер какое-то ограничение памяти в буфере?





ForEachAsync как и многие другие подобные методы, это просто оболочка над курсором mongodb, которая работает через пакеты. Вы можете настроить это поведение с помощью параметра BatchSize, например, в AggregateOptions здесь.
Отлично спасибо. Это также помогло мне найти пример: stackoverflow.com/questions/36391848/…