Със сигурност можете да съхранявате всичките си документи в една колекция, но вероятно е по-лесно и по-чисто в дългосрочен план да съхранявате само един тип в колекция (от гледна точка на C#). Можете да направите това, като създадете клас с метод за разширение в MongoDatabase.
public static class MyDatabase
{
public static MongoCollection<T> GetCollection<T>(this MongoDatabase db)
{
var name = typeof(T).Name;
return db.GetCollection<T>(name);
}
}
След това можете просто да извикате GetCollection с вашия тип върху него и името ще бъде скрито от вашия общ код. Можете също да създадете нещо подобно, за да абстрахирате нещата още малко:
public class MyDatabase
{
private MongoDatabase _db;
public MyDatabase(MongoDatabase db)
{
_db = db;
}
public MongoCollection<object> Objects
{
get
{
return _db.GetCollection<object>();
}
}
}
С това можете просто да правите
var client = new MongoClient();
var server = client.GetServer();
var db = server.GetDatabase("MyDb");
var myDb = new MyDatabase(db);
myDb.Objects.Find();
Това Find
ще картографира за изпълнение срещу Objects
колекция, просто заменете <object>
с вашия тип и дайте име на колекцията.