sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDb serialisera generiska typer (klasser)

Du kan säkert lagra alla dina dokument i en samling, men det är förmodligen enklare och renare i längden att bara lagra en typ i en samling (ur ett C#-perspektiv). Du kan göra detta genom att skapa en klass med en Extension Method 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);
    }
}

Sedan kan du bara ringa GetCollection med din typ på så kommer namnet att döljas från din allmänna kod. Du kan också skapa något sånt här för att abstrahera saker lite längre:

public class MyDatabase
{
    private MongoDatabase _db;

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

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

Med detta kan du bara göra

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

Denna Find kommer att mappas för att köras mot Objects samling, ersätt bara <object> med din typ och ge samlingen ett namn.




  1. Hur kan jag skapa unika ID:n för inbäddade dokument i MongoDB?

  2. kryptiskt mongodb-fel LEFT_SUBFIELD stöder endast Objekt:statistik inte:6

  3. Hur Redis-listor kan användas för att implementera ett chattsystem?

  4. Om jag har ett mongo-dokument-id som en sträng, hur frågar jag efter det som ett _id?