2014-11-06 44 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(),并使用调试器进行检查。