【发布时间】:2018-08-19 13:08:51
【问题描述】:
我使用 c# mongodb 驱动程序。在其关于 Lambda Expressions Projection 的官方文档中,他们说:
驱动支持使用表达式树来渲染投影。
本质上,lambda 表达式包含在服务器上形成投影以及客户端结果所需的所有信息,并且不需要进一步的信息。
之后的几行,我们有:
当使用 lambda 表达式定义 Find 投影时,它会在客户端运行。
现在我对 Lambda 表达式 投影方面有点困惑。它是在服务器端运行还是在客户端运行?
当我使用.Include() 和.Exclude() 方法投影文档时,它是创建服务器端投影还是客户端投影?
例如,如果我过滤一个Post 文档并且我想用.Exclude() 方法排除它的tags 字段,驱动程序是否会获取整个文档,然后在应用程序中排除tags 字段,或者它会发出一个Mongodb @987654331 @请求{ tags: 0 }投影?
Lambda 表达式 投影和使用.Include() 和.Exclude() 投影文档之间的区别是什么?
谢谢。
【问题讨论】:
-
文档链接:lambda expression - Find Projection
-
你不需要也不应该放tags in your question title。标记系统绰绰有余(问题底部的蓝色小东西)。另请参阅tagging 上的帮助:“您应该在标题中使用标签的唯一情况是它们与标题的对话语气有机结合。” (它包括一个格式列表,如果您在标题中包含标签,则不应使用这些格式,其中包括 [标签] [问题标题])
-
不客气 :-) 我没有考虑过你的问题,所以我很想知道答案是什么。
-
如果它在客户端执行投影有点有趣,但我认为文档令人困惑。
-
我觉得这可能意味着服务器只返回表达式中的字段,然后将其投影到新的表单客户端。