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

シェルでも遅い場合は、C#ドライバーとは何の関係もありません。

explainクエリが期待するインデックスを使用しているかどうかを判断するために使用します。インデックスを使用していない場合、5億を超えるドキュメントのクエリには時間がかかります。シェル内:

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

クエリを高速化するには、参照を使用しているクエリのフィールドを含むインデックスを追加する必要がありますcondition

于 2013-01-08T02:52:19.253 に答える