14

在 , 的文档中,我MongoClient看到据说它们是线程安全的。MongoServerMongoDatabaseMongoCollection<T>

问题:这是否意味着我可以(例如)在一个类中拥有它们的静态字段并从任何Task/访问它们Thread

像:

public static MongoClient Client = new MongoClient(Properties.Settings.Default.MongoConnStr);
public static MongoServer Server = Client.GetServer();
public static MongoDatabase DraftDB = Server.GetDatabase("draftdb");
public static MongoCollection<MyDoc> Docs = Program.DraftDB.GetCollection<Location>("mydocs");

特别是关于MongoCollection<T>; 我想确保类似的东西var cursor = Docs.Find(query).SetLimit(50);不会在MongoCollection<T>(准确地说是静态)上执行突变。

4

1 回答 1

12

这个页面你知道 MongoServer、MongoDatabase、MongoClient、MongoCollection 和 MongoGridFS 是线程安全的。MongoCursor 特别不是线程安全的。

这意味着您可以从多个任务中安全地访问它们,而不必担心更改它们的“状态”——但是您仍然必须注意如何设置或更改它们的值。

具体到您的问题,查询集合(返回游标对象)不会改变MongoCollection 对象。

于 2013-06-17T01:33:34.833 回答