C# MongoDB C驱动程序2.2中带AsQueryable的投影

C# MongoDB C驱动程序2.2中带AsQueryable的投影,c#,mongodb,mongodb-.net-driver,asqueryable,C#,Mongodb,Mongodb .net Driver,Asqueryable,我正在尝试MongoDB C驱动程序版本2.2。我尝试使用投影,因为我不想检索文档中的所有元素。 我发现一种方法是使用project operator和find operator,如下所示: collection.Find(key => key.Index == 1).Project<MyClass>(Builders<MyClass>.Projection.Include(key => key.Name).Include(key => key.Inde

我正在尝试MongoDB C驱动程序版本2.2。我尝试使用投影,因为我不想检索文档中的所有元素。 我发现一种方法是使用project operator和find operator,如下所示:

collection.Find(key => key.Index == 1).Project<MyClass>(Builders<MyClass>.Projection.Include(key => key.Name).Include(key => key.Index)). ToEnumerable ();
collection.AsQueryable().Where(key => key.Index == 1);

在上述情况下是否可以使用投影?如果我使用选择操作符,它会和投影有相同的效果吗?或者仍将从数据库服务器获取所有元素,然后在应用程序服务器中选择指定的元素?

是的,这是可能的。如果在查询中添加Select Selecti=>new{i.Name,i.Index}并在最后调用ToString方法,您将看到Linq提供程序生成一个聚合管道,其中包含两个操作$match和$project:

在sumary中,是的,Select生成$project操作


关于您的其他问题,只有在调用ToList之类的方法将查询结果提取到内存中,或者在迭代结果时,才会执行查询。

是否可以使用排除语法
var query=collection.AsQueryable().Where(key => key.Index == 1).Select(k=>new {k.Name,k.Index});
var aggregate= query.ToString();