Podczas pracy z hierarchią typów polimorficznych zmienna kolekcji i zapytania LINQ powinny zaczynać się od klasy bazowej. Na przykład, aby odczytać wszystkie dokumenty typu A z bazy danych, byś napisał:
var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
// process document of type A
}
Do celów diagnostycznych możesz zobaczyć odpowiednie zapytanie natywne MongoDB za pomocą:
var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();
Zauważ, że musisz rzutować zapytanie na MongoQueryable (nie MongoQueryable