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
.