sql >> Database >  >> NoSQL >> MongoDB

Type-informatie doorgeven aan MongoDB zodat het interfacetypes correct kan deserialiseren?

Als resultaat van MyClass verwijzend naar een interfacetype, dat dan elke klasse 'Bson' kan bevatten die die interface implementeert, moeten we MongoDB het type klasse vertellen dat aan het einde van die (alle) interface kan. Het kan dan uit de klassen afleiden dat het weet hoe het bepaalde BsonDocuments moet deserialiseren met die klasse' Bson.

public interface IMyInterface
{
    String Name { get; set; }
}

public class MyIntImpl : IMyInterface
{
    public String Name { get; set; }
}

public class MyClass
{
    public IMyInterface IntRef { get; set; }

    public MyClass()
    {
        IntRef = new MyIntImpl();
    }
}

// When starting up MongoDB
private void RegisterClasses()
{
    BsonClassMap.RegisterClassMap<MyIntImpl>();
}

Door de klasse MyIntImpl . toe te voegen naar de BsonClassMap weet het nu hoe Bson van dat klassetype moet worden gedeserialiseerd. Je moet er alleen voor zorgen dat je de kaart gevuld houdt met klassen die interfaces implementeren die je zou kunnen serialiseren.

Enkele referentielinks:Hoog naar laag niveau overzicht van C# MongoDB-serialisatie , een SO-bericht dat schetst de oplossing.




  1. Spark en MongoDB-toepassing in Scala 2.10 maven ingebouwde fout

  2. Hoe de datum op te halen uit een MongoDB ObjectId met behulp van SQL

  3. MongoDB via Mongoose JS - Wat is findByID?

  4. Mongodb geaggregeerde query op specifieke records in plaats van verzameling