按界面投影

时间:2015-06-29 09:53:48

标签: c# mongodb mongodb-.net-driver

我想知道使用C#Driver 2.0执行服务器端投影的最佳方式是什么。我们来考虑这种类型

interface IFoo
{
    public string Id { get; set; }
    public string Name { get; set; }
}


class Foo : IFoo
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string MoreData { get; set; }
}

如何查找所有对象并仅返回IdName?这是执行服务器端投影吗?

 IMongoCollection<IFoo> collection = /*...*/
 return await collection.Find(f => true).ToListAsync<IFoo>();

如果没有,我该如何为ProjectionDefinition创建IFoo

1 个答案:

答案 0 :(得分:1)

由于 Find 方法返回 IFindFluent 对象,您可以使用投影构建器 IFindFluent.Project 使用 Builders.Projection.Exclude 方法排除MoreData属性的方法:

var q = collection.Find(f => true)
                  .Project(Builders<Foo>.Projection.Exclude(x => x.MoreData));
var results = await q.ToListAsync();