sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDb serialiserer generiske typer (klasser)

Du kan helt sikkert gemme alle dine dokumenter i én samling, men det er nok nemmere og renere i det lange løb kun at gemme én type i en samling (fra et C#-perspektiv). Du kan gøre dette ved at oprette en klasse med en udvidelsesmetode på MongoDatabase.

public static class MyDatabase
{
    public static MongoCollection<T> GetCollection<T>(this MongoDatabase db)
    {
        var name = typeof(T).Name;
        return db.GetCollection<T>(name);
    }
}

Så kan du bare ringe til GetCollection med din type på, og navnet vil blive skjult fra din generelle kode. Du kan også lave noget som dette for at abstrahere tingene lidt længere:

public class MyDatabase
{
    private MongoDatabase _db;

    public MyDatabase(MongoDatabase db)
    {
        _db = db;
    }

    public MongoCollection<object> Objects
    {
        get
        {
            return _db.GetCollection<object>();
        }
    }
}

Med dette kan du bare gøre

var client = new MongoClient();
var server = client.GetServer();
var db = server.GetDatabase("MyDb");
var myDb = new MyDatabase(db);
myDb.Objects.Find();

Denne Find vil kortlægges for at udføre mod Objects samling, skal du blot erstatte <object> med din type og giv samlingen et navn.




  1. MongoDB-aggregering over et interval

  2. phpRedis-migrering til klynge og konsekvent hashing

  3. Hvad er C#-ækvivalenten til push og root for MongoDB?

  4. Hvordan får du adgang til attributter for et objekt, der forespørges fra Mongo i Meteor