我最近正在使用MongoDB官方驱动程序。 我遇到的问题是如何进行查询投影。 例如,如果我有一个持久化对象
class A{
id
PropA
PropB
List<LargeObjects>
}
我该如何仅检索id、PropA和PropB,而不是整个对象?如何使用MongoDB官方C#驱动程序完成此操作?
我最近正在使用MongoDB官方驱动程序。 我遇到的问题是如何进行查询投影。 例如,如果我有一个持久化对象
class A{
id
PropA
PropB
List<LargeObjects>
}
我该如何仅检索id、PropA和PropB,而不是整个对象?如何使用MongoDB官方C#驱动程序完成此操作?
查询投影可通过以下方式实现:
MongoCollection<>.Find().SetFields(include/exclude);
//NB: Not tested
MongoCollection<BsonDocument> Acollection = _db.database.GetCollection<BsonDocument>("A");
var resultlist = (from k in Acollection.AsQueryable<A>()
select k.id,k.PropA,k.PropB);
通过Mongo分析器,我能够确定有时会在客户端上投影Linq结果。因此,这取决于您的客户端需求。如果您想从Mongo服务器返回部分数据的结果文档,则应使用Marjan或Ian的解答。否则,如果您要读取记录并将其投影到不同的数据类型,则使用Linq。
看一下FluentMongo:
https://github.com/craiggwilson/fluent-mongo/wiki/Linq
它也可以在Nuget上找到,搜索“fluentmongo”