Using the MongoDB Go Driver, how do I set up connection pooling?

Viewed 6970

I'm using the MongoDB Go Driver in my Go (1.11) server which runs on Google Cloud's App Engine. I'm not really sure if I still manually have to set up connection pooling or if it's already being taken care of out of the box. For example I'm not entirely sure what the context (with timeout) exactly means.

My code looks like this:

package tools

import (
    "context"
    "time"
    "valuation-app/settings"

    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

// ConnectToDB starts a new database connection and returns a reference to it
func ConnectToDB() (*mongo.Database, error) {
    settings := settings.Get().Database
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()
    options := options.Client().ApplyURI(settings.URI)
    options.SetMaxPoolSize(10)
    client, err := mongo.Connect(ctx, options)
    if err != nil {
        return nil, err
    }

    return client.Database(settings.DatabaseName), nil
}
1 Answers

From comments by @Alongkorn:

Mongo-go-driver takes care of connection pooling by default(100 connection by default)

You can read the source code here

Related