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 shell進行計數查詢時的結果相同。我也嘗試了設置批量大小,我得到了同樣的結果。 – jWoose 2010-12-17 15:37:17
是的,關於你是對的,我只是沒有準確地讀你的代碼。 – 2010-12-17 16:34:44
您是否知道mongo是否鎖定寫入記錄以防止光標檢索它們? – jWoose 2010-12-17 20:44:23