我們有一個集合包含服務器中的文檔。每個文檔都是這樣的:使用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驅動程序中非常簡單,但我不知道如何在新驅動程序中執行此操作。謝謝。