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

Deserializacja typów polimorficznych za pomocą sterownika MongoDB C#

Dlaczego masz ten sam „publiczny identyfikator obiektu”; w każdej klasie pochodnej? To nie jest dobry pomysł. Ukrywa pole nadrzędnego identyfikatora.

Aby rozwiązać problem, musisz "zarejestrować" swoje klasy pochodne (jak w każdym mechanizmie serializacji/deserializacji). Można to zrobić na 3 sposoby:

  1. Sposób deklaratywny - udekoruj klasę bazową Node za pomocą:

    [BsonKnownTypes(typeof(PlotNode), typeof(EndNode))]
    
  2. Ogólny sposób - kiedy typy są znane w czasie kompilacji:

    BsonClassMap.RegisterClassMap<PlotNode>();
    BsonClassMap.RegisterClassMap<EndNode>();
    
  3. Dynamiczny sposób - gdy typy są nieznane w czasie kompilacji:

    BsonClassMap.LookupClassMap(typeof(PlotNode));
    BsonClassMap.LookupClassMap(typeof(EndNode));
    

  • Kolejna sugestia - użyj LINQ zamiast Query

    Node node = collection.AsQueryable().FirstOrDefault(n => n.Id == id);
    



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Konwersja dokumentów BSON do JSON w Javie

  2. Prosta strona logowania w nodejs przy użyciu ekspresu i paszportu z mongodb

  3. Wiele odniesień do schematów w pojedynczej tablicy schematów — mangusta

  4. Usuń obiekt z tablicy zagnieżdżonej za pomocą $pull i $[identyfikator] (mongoDB 3.6)

  5. MongoDB:w ścieżce znaleziono zbyt wiele elementów pozycyjnych (tj. „$”)