我想知道使用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; }
}
如何查找所有对象并仅返回Id
和Name
?这是执行服务器端投影吗?
IMongoCollection<IFoo> collection = /*...*/
return await collection.Find(f => true).ToListAsync<IFoo>();
如果没有,我该如何为ProjectionDefinition
创建IFoo
?
答案 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();