Бях изправен пред същия проблем. След отстраняване на грешки в кода на MongoDB видях, че се прилага различен сериализатор при използване на интерфейса вместо конкретния тип. В този случай, DiscriminatedInterfaceSerializer се използва като сериализатор за интерфейса, докато BsonClassMapSerializer се използва за конкретния тип.
С този сериализатор за интерфейса класовата карта на внедряващия клас не е свързана с интерфейса. Следователно не знае, че Id е bson id полето и трябва да бъде съпоставено с ключа „_id“. Ето защо е повдигнато изключението.
Решението, което работи за мен, е да използвам ImpliedImplementationInterfaceSerializer :
[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity
{
// snip...
}
Този атрибут регистрира сериализатора и дефинира използването на bson classmap на обекта за IEntity, така че свойството Id да бъде правилно картографирано. Намерих това решение благодарение на @Robert Baker в неговия отговор тук:Десериализиране на обект като интерфейс с MongoDB C# драйвер