【问题标题】:MongoDB C# Driver: What happens exactly when I execute a query?MongoDB C# 驱动程序:当我执行查询时会发生什么?
【发布时间】:2016-04-30 08:37:49
【问题描述】:

我正在将 MongoDB 解决方案的性能与其他数据库模型进行比较,因此我需要在执行查询时获取一些准确的时间信息。

(在我的例子中,使用 MongoDB C# 驱动程序,)当我执行 FindFindAsync 时,服务器端究竟发生了什么以及传递了哪些数据?服务器是否执行查询并且是唯一发生的事情,例如,当我对该光标执行ToList(),通过网络传输文档时?

还是仅在我真正想要检索文档时(全部或部分)执行查询?或者,一些关于结果的信息已经通过对Find的调用传输了?

【问题讨论】:

    标签: c# mongodb performance


    【解决方案1】:

    FindFindAsync 都允许构建具有相同性能的异步查询,只是:

    当您FindAsync 时,它返回的光标不会一次加载所有文档,但为您提供从数据库光标(这在查询结果很大的情况下很有帮助。

    方法Find通过方法ToListAsync为您提供更简单的语法,它内部从光标检索文档并一次返回所有文档

    但是FindFindAsync 都不会从服务器检索任何数据,直到您请求它(通过光标迭代)。

    希望,它会有所帮助。

    【讨论】:

    • 对不起,显然我的问题并不完全清楚。 (尽管您解释的内容绝对很有趣并且很高兴知道,所以谢谢!)我的意思是问 服务器 已经完成了哪些处理,即当我们返回光标时查询是否已经执行,还是在检索到第一个文档时执行?
    • 在您请求第一个文档之前,服务器什么都不做。所以,用你的话来说——“它在第一个文档被检索到时执行”。
    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2021-07-23
    • 2016-05-24
    • 2015-06-09
    • 2018-10-21
    • 2013-04-18
    • 2018-05-03
    相关资源
    最近更新 更多