1
私はmongodb.orgの10gen c#MongoDBドライバを使用しています.2百万以上の行を持つコレクションからすべての行を取得しようとしています。MongoCursorがMongoCollectionからすべての結果を返さないのはなぜですか?
var mongoServer = dataHelper.GetMongoServer();
var mongoDatabase = mongoServer.GetDatabase("MyDB");
var mongoCollection = mongoDatabase.GetCollection<MyClass>("MyClass");
var mongoCount = mongoCollection.Count();
var mongoCursor = mongoCollection.FindAll();
mongoCursor.SetBatchSize(1000);
var totalCount = 0;
foreach(var myClass in mongoCursor)
{
++totalCount;
//process record
}
foreach文が完了すると、totalCountはそのコレクションに含まれるmongoCountの約91%にすぎません。私のコードに何か問題がありますか?なぜなら、あなたの
は実際にLINQの方法ではありません。実際にすべてのレコードをデシリアライズしていた場合は、ずっと時間がかかります。 mongoCollection.Count()から得られる結果は、mongoシェルからcountクエリを実行したときと同じです。私はバッチサイズを設定しないで試してみましたが、同じ結果が得られました。 – jWoose
はい、あなたが正しいと思っています。私はちょうどあなたのコードを正確には読んでいません。 –
mongoが書き込みのレコードをロックすると、カーソルがそれらのレコードを取得できないことがわかりますか? – jWoose