我们有一个集合包含服务器中的文档。每个文档都是这样的:使用MongoDB C#驱动程序在查询中包含/排除字段2.4
{ _id: "...", Prop1: "", Prop2: "", Prop3: "", LargeField: "", ... }
还有很多其他字段,但它们不是客户要求的。
我想要加载文档作为MyDoc
类,它的定义是:
public class MyDoc {
public string Id { get; set; }
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
public string LargeField { get; set; }
}
我已经试过:
var client = new MongoClient(uri);
var database = client.GetDatabase("MyDatabase");
var collection = database.GetCollection<MyDocs>("MyDocs");
var allDocs = collection.Find().ToList();
然后,它会加载每个文档的所有领域,所以我必须将[BsonIgnoreExtraElements]
放在MyDoc
上。这里的问题是文档很大,但我只需要一个字段的限制子集。是否有可能让司机知道我只需要在课堂上定义的字段?
如果没有,是否可以排除LargeField
等一些字段以使结果集更小?我已经试过:
var fieldsBuilder = Builders<MyDoc>.Projection;
var fields = fieldsBuilder.Exclude(d => d.LargeField);
var allDocs = collection.Find().Project(fields).ToList();
但现在allDocs
成为BsonDocument
列表,而不是MyDoc
名单。如何用投影查询MyDoc
?
有人可以帮忙吗?这在传统MongoDB驱动程序中非常简单,但我不知道如何在新驱动程序中执行此操作。谢谢。