0

很抱歉给你一个 MongoDb for Cshare 驱动程序(Samus)的问题,你能帮忙看看吗?

 using (Mongo mongo = new Mongo(config.BuildConfiguration()))
        {
            mongo.Connect();
            try
            {
                var db = mongo.GetDatabase("MyCollection");//Collection 's count > 500,000,000
                var collection = db.GetCollection<BasicData>();
                Console.WriteLine("Count by LINQ on typed collection: {0}", collection.Linq().Count(x => x.Id > 1));////error ,timeout     
                Console.WriteLine("Count by not LINQ on typed collection: {0}", collection.Count());  //no condition is ok                   
                Console.ReadKey();
            }
            finally{
                mongo.Disconnect();
            }  }    

使用 Mongodb 外壳:

db.collection.find(condition).count() 或 db.collection.count(condition); //非常慢

4

1 回答 1

2

如果它在 shell 中也很慢,那么它与 C# 驱动程序没有任何关系。

用于explain确定您的查询是否正在使用您期望的索引。如果它不使用索引,任何超过 500M 文档的查询都需要一些时间。在外壳中:

db.collection.find(condition).explain();

为了加快查询速度,您可能需要添加一个索引,其中包含condition您正在使用的查询引用的字段。

于 2013-01-08T02:52:19.253 回答