MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwenden von C# MongoDB LINQ mit Diskriminator

Wenn Sie mit einer polymorphen Typhierarchie arbeiten, sollten Ihre Sammlungsvariable und Ihre LINQ-Abfragen in Bezug auf die Basisklasse beginnen. Um beispielsweise alle Dokumente des Typs A aus der Datenbank zurückzulesen, würden Sie schreiben:

var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
    // process document of type A
}

Zu Diagnosezwecken können Sie die entsprechende native MongoDB-Abfrage anzeigen mit:

var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();

Beachten Sie, dass Sie die Abfrage in ein MongoQueryable (nicht MongoQueryable) umwandeln müssen, da der OfType()-Aufruf den Typ von IQueryable geändert hat.