Какое соглашение является правильным для получения списка документов MongoDb асинхронно? - PullRequest
0 голосов
/ 09 июля 2019

Я сталкивался с двумя различными способами асинхронного получения списка документов MongoDB.Один из них предложен MongoDB, а другой - что-то, что я реализовал в настоящее время.

1) Предложено MongoDB:

public async Task<IEnumerable<T>> GetAllAsync()
{
    return await _collection.Find(x => true).ToListAsync();
}

2) Метод, который у меня есть в настоящее время:

public async Task<IEnumerable<T>> GetAllAsync()
{
    var result = await _collection.FindAsync(x => true);
    return await result.ToListAsync();
}

Какая здесь разница?Первый способ действительно асинхронный?Разве это не получение с использованием Find() синхронно, а затем асинхронно возвращает список?

Некоторое понимание этого было бы полезно.Спасибо.

1 Ответ

2 голосов
/ 09 июля 2019

Find не является законченной операцией, она просто запускает свободный объект для поиска объектов, которые можно использовать для быстрого добавления дополнительных параметров поиска.

Ваш второй подход вернет IAsyncCursor, который позволяет асинхронно перебирать коллекцию, но не позволяет добавлять дополнительные аргументы поиска к вызову.

Итак, чтобы ответить на ваш вопрос: оба пути асинхронны, они 'Это всего лишь два разных способа поиска и возврата документа.

См. методы, найденные в IFindFluent (возвращаемые вызовом Find) и IAsyncCursor (возвращается по вызову FindAsync).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...