MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да поправим грешка {document}.Id не се поддържа

Бях изправен пред същия проблем. След отстраняване на грешки в кода на 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# драйвер



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Java Future - Spring Authentication е null в AuditorAware

  2. Времево клеймо на MongoDb

  3. Powershell Mongodb удостоверяване

  4. Проблем с инсталирането на Mongo DB на Windows 8.1

  5. Използване на $in в MongooseJS с вложени обекти