为什么MongoCursor没有从MongoCollection返回所有结果?

时间:2010-12-17 13:33:41

标签: c# .net mongodb

我正在使用来自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%。我的代码有问题吗?

1 个答案:

答案 0 :(得分:1)

因为您更改了批量大小而发出1 Mb?因为默认批量大小实际上是4mb。尝试不设置批量大小。

2您是否尝试过直接设置限制,例如设置为3百万?

3你也试图获得部分数据,例如一半的数据,因为在mongodb或驱动程序mb有些超时?

4关于mongo db的cuncurrency

希望得到这个帮助。