使用MongoDB 10gen驱动程序进行查询投影

Mar*_*ski 12 c# mongodb

最近我和mongodb官方司机一起玩.我遇到的问题是如何进行查询投影.示例,如果我有一个持久化对象

class A{
  id
  PropA
  PropB
  List<LargeObjects>
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能检索id,PropA和PropB而不是检索整个对象?如何使用mongodb官方c#驱动程序?

Mar*_*ski 13

可通过以下方式查询投影:

MongoCollection<>.Find().SetFields(include/exclude);
Run Code Online (Sandbox Code Playgroud)


Bri*_*ver 5

从官方10gen MongoDB C#驱动程序的v1.8开始,(以及Zambonilli在之前的回答中没有提到),Select linq运算符将始终在客户端执行,而不是在数据库服务器上执行.

文档(也由Sunil Raj在之前的回答中提供):http: //docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/

在"Select"linq查询运算符下,页面的大约一半是一个大的红色框,内容如下:

警告:选择不会导致从服务器返回的字段更少.将整个文档拉回并传递给本机Select方法.因此,投影在客户端执行.


mar*_*_dj 0

看看 FluentMongo:

https://github.com/craiggwilson/ Fluent-mongo/wiki/Linq

它也可以在 Nuget 上使用,搜索“fluencemongo”