2014-11-06 49 views
0

查詢,這個已經被問了很多次之前,我已經得到了不同的人有不同的答案。MongoDb linq和內存查詢。我怎麼知道它在DB

有人說,當:

collection.AsQueryable<object>().Where() 

使用「去哪兒」的操作在內存中完成和其他人說,這是轉換爲蒙戈查詢。

當我參考:使用MongoDB.Driver.Linq;

我有機會獲得AsQueryable已(),但我不能鏈中的該結束了「去哪兒」條款沒有引用System.Linq的。

所以,我做了一個測試通過插入80000個複雜的對象到我的本地蒙戈DB和做了一個簡單的查詢。大約需要5秒鐘才能返回這些對象中的任何給定頁面。這使我相信它在記憶中完成了。

的文件似乎使用普通的LINQ倡導查詢: http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/

但它不引用System.Linq的例子。它還指出Linq可以使用1.8版本以上。我的版本比這更高,所以我應該罰款。

回答

0

一般來說,如果你申請這幾樣功能collection.AsQueryable<object>(),它會在MongoDB中完成。如果你申請.ToList()功能或任何類似的功能,實際上從羅列讀取之後做到這一點,它會在內存中完成。

要自行檢查,請在單獨的說明中執行AsQueryable()Where(),並使用調試器進行檢查。

相關問題