我正在使用来自mongodb.org的10gen c#MongoDB驱动程序,我试图从一个有2百万+行的集合中获取所有行。这是代码:
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%。我的代码有问题吗?
答案 0 :(得分:1)
因为您更改了批量大小而发出1 Mb?因为默认批量大小实际上是4mb。尝试不设置批量大小。
2您是否尝试过直接设置限制,例如设置为3百万?
3你也试图获得部分数据,例如一半的数据,因为在mongodb或驱动程序mb有些超时?
4关于mongo db的cuncurrency。
希望得到这个帮助。