Nous avons une collection contient des documents dans le serveur. Chaque document est comme:Inclure/exclure les champs dans la requête avec le pilote MongoDB C# 2.4
{ _id: "...", Prop1: "", Prop2: "", Prop3: "", LargeField: "", ... }
Il existe de nombreux autres champs, mais ils ne sont pas requis par le client.
Je veux charger des documents comme MyDoc
classe dont la définition est:
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; }
}
J'ai essayé:
var client = new MongoClient(uri);
var database = client.GetDatabase("MyDatabase");
var collection = database.GetCollection<MyDocs>("MyDocs");
var allDocs = collection.Find().ToList();
Ensuite, il chargera tous les champs pour chaque document, donc je dois mettre [BsonIgnoreExtraElements]
sur MyDoc
. Le problème ici est que le document est grand mais j'ai seulement besoin d'un sous-ensemble limite de champs. Est-il possible de faire savoir au conducteur que j'ai seulement besoin des champs définis dans la classe?
Si ce n'est pas le cas, est-il possible d'exclure certains des champs tels que LargeField
pour réduire le nombre de résultats? J'ai essayé:
var fieldsBuilder = Builders<MyDoc>.Projection;
var fields = fieldsBuilder.Exclude(d => d.LargeField);
var allDocs = collection.Find().Project(fields).ToList();
Mais maintenant allDocs
liste devient BsonDocument
au lieu de la liste MyDoc
. Comment faire une requête MyDoc
avec projection?
Quelqu'un peut-il aider? C'est assez simple dans l'ancien pilote MongoDB mais je ne sais pas comment le faire dans le nouveau pilote. Merci.