C# MongoDB - вызов GetCollection единожды за сеанс
Разбираюсь с работой драйвера MongoDb для C#. Для доступа к методам работы с коллекцией используется метод Database.GetCollection<type>("collection")
. Можно ли вызвать этот метод 1 раз записав результат в переменную а затем ссылаться на него для работы с коллекцией?
Я заметил, что мне приходится часто вызывать метод GetCollection перед тем, как сделать несколько действий с коллекцией, что может негативно сказаться на потребляемой памяти.
Могу ли я вызвать GetCollection
один раз за все время выполнения программы, а потом для изменения ее содержимого ссылаться к этому объекту постоянно? Можно ли сделать несколько запросов к одному объекту коллекции одновременно из разных потоков? Может ли это привести к непредсказуемому поведению?
Ответы (1 шт):
Судя по тому, что пишут на английском SO нет никакой разницы, как вы это будете делать.
GetCollection
doesn't load the collection, not even aFind()
will. In fact, you'll have to start iterating theMongoCursor
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 aMongoClient
is thread-safe and is safe to be stored globally or in an IoC container.