Při práci s hierarchií polymorfních typů by vaše proměnná kolekce a vaše dotazy LINQ měly začínat z hlediska základní třídy. Chcete-li například přečíst všechny dokumenty typu A zpět z databáze, napište:
var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
// process document of type A
}
Pro diagnostické účely můžete zobrazit odpovídající nativní dotaz MongoDB pomocí:
var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();
Všimněte si, že musíte odeslat dotaz na MongoQueryable (nikoli MongoQueryable