【问题标题】:MongoDb linq and in memory querying. How do I know it queries in the DBMongoDb linq 和内存查询。我怎么知道它在数据库中查询
【发布时间】:2014-11-06 21:10:04
【问题描述】:

这个问题以前被问过很多次,我从不同的人那里得到了不同的答案。

有人说当:

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

使用“Where”操作在内存中完成,其他人说它被转换为mongo查询。

当我参考时:使用 MongoDB.Driver.Linq;

我可以访问 AsQueryable(),但如果不引用 System.Linq,我无法在其末尾链接“Where”子句。

所以我做了一个测试,将 80 000 个复杂对象插入我的本地 mongo db 并做了一个简单的查询。返回包含 50 个这些对象的任何给定页面大约需要 5 秒。这让我相信它是在记忆中完成的。

文档似乎提倡使用普通 Linq 进行查询: http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/

但在示例中它没有引用 System.Linq。它还指出 Linq 可以在 1.8 版本上使用。我的版本比那个高,所以我应该没问题。

【问题讨论】:

    标签: c# performance linq mongodb


    【解决方案1】:

    一般来说,如果你将这些函数应用到collection.AsQueryable&lt;object&gt;(),它将在 MongoDb 中完成。如果您在应用.ToList() 函数或任何实际从枚举中读取的类似函数之后执行此操作,则会在内存中完成。

    要自己检查,请在单独的说明中执行AsQueryable()Where(),并使用调试器进行检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多