搜索在互联网上如何检索MongoDB中字段的子集,使用C#的官方驱动程序(但使用LINQ作为基础架构),我发现了如何在MongoDB的外壳做到这一点。
// selecting only "field" of a collection
db.collection.find( { field : 'value' }, { field: 1 } );
然后,我发现在C#的LinQ教程的Select
方法,这相当于这个:
collection.AsQueryable<T>().Select(x => new { x.field });
然而,教程说的方法“ 用于投影从匹配文档的新结果类型 ”。
如何保证这种方法只检索字段的子集,而不是整个结果,然后只选择子集到一个新的对象吗?
将驱动程序之前构建查询命令检索结果?
司机目前没有检索字段的子集。 如果你需要这个功能,你需要做手工。 这种功能的票是在这里: https://jira.mongodb.org/browse/CSHARP-456 。 随意留下意见或投上一票,如果你需要这个。
这是一种欺骗行为......但是:
//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();