C# 为什么MongoCursor不返回MongoCollection的所有结果?
我正在使用MongoDB.org上的10gen c#MongoDB驱动程序,试图从一个有200多万行的集合中获取所有行。代码如下:C# 为什么MongoCursor不返回MongoCollection的所有结果?,c#,.net,mongodb,C#,.net,Mongodb,我正在使用MongoDB.org上的10gen c#MongoDB驱动程序,试图从一个有200多万行的集合中获取所有行。代码如下: var mongoServer = dataHelper.GetMongoServer(); var mongoDatabase = mongoServer.GetDatabase("MyDB"); var mongoCollection = mongoDatabase.GetCollection<MyClass>("MyClass"); var mon
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
}
var mongoServer=dataHelper.GetMongoServer();
var mongoDatabase=mongoServer.GetDatabase(“MyDB”);
var mongoCollection=mongoDatabase.GetCollection(“MyClass”);
var mongoCount=mongoCollection.Count();
var mongoCursor=mongoCollection.FindAll();
mongoCursor.SetBatchSize(1000);
var totalCount=0;
foreach(mongoCursor中的var myClass)
{
++总数;
//过程记录
}
当foreach语句完成时,totalCount仅占集合中mongoCount的91%左右。我的代码有问题吗?1 Mb您的问题是因为更改了批处理大小?因为默认批量大小实际上是4mb。尝试不设置批量大小 2您是否尝试直接将限额设置为300万 3您是否也尝试过获取部分数据,例如50万,因为mongodb或驱动程序有超时 4关于mongo db
希望对您有所帮助。1 Mb您的问题是因为更改了批量大小?因为默认批量大小实际上是4mb。尝试不设置批量大小 2您是否尝试直接将限额设置为300万 3您是否也尝试过获取部分数据,例如50万,因为mongodb或驱动程序有超时 4关于mongo db
希望这有帮助。我相信在这种情况下,计数实际上不是Linq方法,因为计数是瞬时的。如果它实际上是反序列化所有记录,则需要更长的时间。从mongoCollection.Count()得到的结果与从MongoShell执行计数查询时的结果相同。我也尝试过设置批大小,得到了相同的结果。是的,关于计数你是对的,我只是没有准确地读取你的代码。你知道mongo是否会锁定写入记录,阻止光标检索它们吗?我相信在这种情况下计数实际上不是Linq方法,因为计数是瞬时的。如果它实际上是反序列化所有记录,则需要更长的时间。从mongoCollection.Count()得到的结果与从MongoShell执行计数查询时的结果相同。我也尝试过设置批大小,得到了相同的结果。是的,关于计数,你是对的,我只是没有准确地读取你的代码。你知道mongo是否会锁定写入的记录,阻止光标检索它们吗?