3

在互联网上搜索如何使用 C# 官方驱动程序(但使用 LinQ 作为基本架构)在 MongoDB 中检索字段子集,我发现了如何在 MongoDB shell 中执行此操作。

// selecting only "field" of a collection
db.collection.find( { field : 'value' }, { field: 1 } ); 

然后,我在 C# LinQ Tutorial 找到了这个Select方法,相当于这个:

collection.AsQueryable<T>().Select(x => new { x.field });

但是,教程说该方法“用于从匹配的文档中投影新的结果类型”。

如何确保此方法仅检索字段子集而不是整个结果,然后仅将子集选择到新对象中?

驱动程序会在检索结果之前构建查询命令吗?

4

2 回答 2

4

驱动程序当前不检索字段的子集。如果您需要该功能,则需要手动完成。此功能的票在这里:https ://jira.mongodb.org/browse/CSHARP-456 。如果您需要,请随时留下反馈或投票。

于 2012-07-17T00:42:22.643 回答
1

这是作弊......但是:

//This actual implementation is untested and may contain small errors.
//The helper method has been tested and *should* work.

public static IMongoQuery GetMongoQuery<T>(this IQueryable<T> query)
{
    return ((MongoQueryable<T>)query).GetMongoQuery();
}

var temp =
    from x in DB.Foo.AsQueryable<Test>()
    where x.SomeField > 5;
    select (x.OtherField);

return temp.GetMongoQuery().ToJson();
于 2012-07-17T00:32:35.377 回答