im使用c#mongodb驱动程序。在有关 Lambda Expressions Projection 的官方文档中,他们说:
驱动程序支持使用表达式树来渲染投影。
lambda表达式本质上包含形成服务器上的投影以及客户端结果所需的所有信息,并且不需要其他信息。
以及随后的几行内容,我们有:
使用lambda表达式定义Find投影时,它将在客户端运行。
现在,我对 Lambda Expression 投影方面有些困惑。它运行在服务器端还是客户端?
当我使用.Include()
和.Exclude()
方法投影文档时,它是在创建服务器端投影还是在客户端投影?
例如,如果我过滤了一个Post
文档,并且我想使用tags
方法排除它的.Exclude()
字段,驱动程序是否会提取整个文档,然后在应用程序还是以投影tags
发出Mongodb find()
请求?
当我想在投影方面寻找和投影某些文档时, Lambda Expression 投影与使用{ tags: 0 }
和.Include()
投影文档之间有什么区别?
谢谢。
答案 0 :(得分:1)
经过一番研究,并在启用了 完整详细分析 的示例数据库中检查了两种投影,我发现两种{ {1}}和.Exclude()
(使用.Include()
)以及单个 Expression 投影类型在服务器端运行。我仍然不知道这些投影之间的区别-正如官方文档所说,但是我解决了我的问题,现在确定主投影部分是在服务器端完成的。
这是我在两种不同类型的驾驶员提供的投影中的研究结果(使用Projection Builder
示例数据库,仅显示了分析结果的有用部分):
使用 Projection Builders(hte
.Include()
)进行投影:
看来我现在只能使用链接到图片(缺少声誉!)。
注释中提供了指向我使用过的有用文档的链接。
我希望这会有所帮助。