MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak naprawić {document}.Id nie jest obsługiwany błąd

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#



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tajemniczy błąd mongodb LEFT_SUBFIELD obsługuje tylko Object:statystyki nie:6

  2. MongoDB:Jak poprawnie wyeksportować kolekcję z MongoDB na mój komputer?

  3. Nazwa pola batchSize ignorowana w projekcji pola

  4. Zmniejszenie rozmiaru pliku bazy danych MongoDB

  5. Replika Node js / MongoDB ustaw tablicę w javascript