With the MongoDb version 2.2.4, the implementation changed a little bit.
Following the best practices let's build the MongoDb connection like this:
public static class PatientDb
{
public static IMongoCollection<Patient> Open()
{
var client = new MongoClient("mongodb://localhost");
var db = client.GetDatabase("PatientDb");
return db.GetCollection<Patient>("Patients");
}
}
Now is returned a interface of IMongoCollection instead of instance of a concrete class like MongoCollection. There is no need of create a instance of server to get the database anymore, the client can reach the database directly.
Then in the controller is done like this:
public class PatientController : ApiController
{
private readonly IMongoCollection<Patient> _patients;
public PatientController()
{
_patients = PatientDb.Open();
}
public IEnumerable<Patient> Get()
{
return _patients.Find(new BsonDocument()).ToEnumerable();
}
}
Where _patients is a IMongoCollection and to retrieve all Patients instead to use the FindAll() now is used the Find() where the filter is an new instance of BsonDocument.