C# MongoDB - вызов GetCollection единожды за сеанс

Разбираюсь с работой драйвера MongoDb для C#. Для доступа к методам работы с коллекцией используется метод Database.GetCollection<type>("collection"). Можно ли вызвать этот метод 1 раз записав результат в переменную а затем ссылаться на него для работы с коллекцией?

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

Могу ли я вызвать GetCollection один раз за все время выполнения программы, а потом для изменения ее содержимого ссылаться к этому объекту постоянно? Можно ли сделать несколько запросов к одному объекту коллекции одновременно из разных потоков? Может ли это привести к непредсказуемому поведению?


Ответы (1 шт):

Автор решения: CrazyElf

Судя по тому, что пишут на английском SO нет никакой разницы, как вы это будете делать.

GetCollection doesn't load the collection, not even a Find() will. In fact, you'll have to start iterating the MongoCursor before anything is actually loaded from the database, and even then, it won't load the entire collection but only batches of configurable size.

Коллекция при этом не грузится, а просто выдаётся курсор, с которым вы дальше и оперируете. Если у вас при этом расходуется лишняя память, то дело не в GetCollection.

Про потокобезопасность - да:

The implementation of IMongoCollection<TDocument> ultimately provided by a MongoClient is thread-safe and is safe to be stored globally or in an IoC container.

→ Ссылка