Dylan
Dylan

Reputation: 315

mongo.Connect() not working as expected in Go using the mongo-go-driver

I am using the package: "github.com/mongodb/mongo-go-driver/mongo"

I am trying to use the following as specified in the documentation:

mongoContext, _ := context.WithTimeout(context.Background(), 10*time.Second)
mongoClient, _ := mongo.Connect(mongoContext, "mongodb://localhost:27017")

However on the second line I get the error:

cannot use "mongodb://localhost:27017" (type string) as type *options.ClientOptions in argument to mongo.Connect

It seems the documentation doesn't match the implementation. Has anyone been successful?

The documentation states:

//To do this in a single step, you can use the Connect function:
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
client, err := mongo.Connect(ctx, "mongodb://localhost:27017")

Upvotes: 2

Views: 2051

Answers (1)

Jonathan Muller
Jonathan Muller

Reputation: 7516

The documentation states that the Connect method have to use a context object. It also provides an example of usage:

You connection string have to be provided to the NewClient function first.


client, err := mongo.NewClient(mongo.options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
    // error
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
err = client.Connect(ctx)
if err != nil {
    // error
}

// here you can use the client object

https://godoc.org/github.com/mongodb/mongo-go-driver/mongo#Client.Connect

To use it as a single step as you try to do, you should be able to do:

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
mongoClient, err := mongo.Connect(ctx, mongo.options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
    // error
}

(The connection string has to be put inside an options.ClientOptions object, and the options.Client().ApplyURI() method will take care of it)

Upvotes: 4

Related Questions