Jeg havde stået over for det samme problem. Efter fejlretning i MongoDB-kode, så jeg, at en anden serializer anvendes, når man bruger grænsefladen i stedet for den specifikke type. I dette tilfælde DiscriminatedInterfaceSerializer bruges som serializer til grænsefladen, hvorimod BsonClassMapSerializer bruges til den specifikke type.
Med denne serializer til grænsefladen er klasseoversigten for den implementerende klasse ikke knyttet til grænsefladen. Den er derfor uvidende om, at Id er bson-id-feltet og skal tilknyttes '_id'-nøglen. Derfor rejses undtagelsen.
Den løsning, der virkede for mig, er at bruge ImpliedImplementationInterfaceSerializer :
[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity
{
// snip...
}
Denne attribut registrerer serializeren og definerer at bruge entitetens bson-klassekort for IENtity, så Id-egenskaben bliver korrekt kortlagt. Jeg fandt denne løsning takket være @Robert Baker i hans svar her:Deserialize objekt som en grænseflade med MongoDB C# Driver