Piers Karsenbarg
Piers Karsenbarg

Reputation: 3201

At what point does the MongoDB C# driver open a connection?

I'm having a problem with lots of connections being opened to the mongo db.

The readme on the Github page for the C# driver gives the following code:

using MongoDB.Bson;
using MongoDB.Driver;
var client = new MongoClient("mongodb://localhost:27017");
var server = client.GetServer();
var database = server.GetDatabase("foo");
var collection = database.GetCollection("bar");

collection.Insert(new BsonDocument("Name", "Jack"));

foreach(var document in collection.FindAll())
{
    Console.WriteLine(document["Name"]);
}

At what point does the driver open the connection to the server? Is it at the GetServer() method or is it the Insert() method?

I know that we should have a static object for the client, but should we also have a static object for the server and database as well?

Upvotes: 1

Views: 1828

Answers (2)

Aditya Manocha
Aditya Manocha

Reputation: 1

While using the latest MongoDB drivers for C#, the connection happens at the actual database operation. For eg. db.Collection.Find() or at db.collection.InsertOne().

{
    //code for initialization
    //for localhost connection there is no need to specify the db server url and port.
    var client = new MongoClient("mongodb://localhost:27017/"); 
    var db = client.GetDatabase("TestDb"); 
    Collection = db.GetCollection<T>("testCollection"); 
 }
//Code for db operations
{

   //The connection happens here.
   var collection = db.Collection;
   //Your find operation
   var model = collection.Find(Builders<Model>.Filter.Empty).ToList();
   //Your insert operation
   collection.InsertOne(Model);
}

I found this out after I stopped my mongod server and debugged the code with breakpoint. Initialization happened smoothly but error was thrown at db operation.

Hope this helps.

Upvotes: 0

Ahmed Haque
Ahmed Haque

Reputation: 7514

Late answer... but the server connection is created at this point:

 var client = new MongoClient("mongodb://localhost:27017");

Everything else is just getting references for various objects.

See: http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/

Upvotes: 1

Related Questions