Miałem do czynienia z tym samym problemem. Po debugowaniu w kodzie MongoDB zauważyłem, że podczas korzystania z interfejsu zamiast określonego typu stosowany jest inny serializator. W tym przypadku DiscriminatedInterfaceSerializer jest używany jako serializator interfejsu, natomiast BsonClassMapSerializer jest używany dla określonego typu.
W przypadku tego serializatora interfejsu mapa klas implementującej klasy nie jest połączona z interfejsem. Dlatego nie jest świadomy, że Id jest polem identyfikatora bson i powinno być zmapowane na klucz '_id'. Dlatego zgłaszany jest wyjątek.
Rozwiązaniem, które zadziałało dla mnie, jest użycie ImpliedImplementationInterfaceSerializer :
[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity
{
// snip...
}
Ten atrybut rejestruje serializator i definiuje użycie mapy klas bson Entity dla IEntity, aby właściwość Id była poprawnie zmapowana. Znalazłem to rozwiązanie dzięki @Robert Baker w jego odpowiedzi tutaj:Zdeserializuj obiekt jako interfejs ze sterownikiem MongoDB C#