How to Use Go With MongoDB?

MongoDB is a popular NoSQL database that is widely used in modern web applications. Go, on the other hand, is a fast and efficient programming language that is becoming increasingly popular for building web applications. In this article, we will discuss how to use Go with MongoDB, including how to connect to a MongoDB database and how to perform basic CRUD operations.

Installing the MongoDB Driver for Go

Before we can start using Go with MongoDB, we need to install the MongoDB driver for Go. The easiest way to do this is by using the following command ?

go get go.mongodb.org/mongo-driver/mongo

This command will download and install the MongoDB driver for Go, which we will use to connect to our MongoDB database.

Connecting to a MongoDB Database

To connect to a MongoDB database using Go, we first need to create a MongoDB client object. We can do this using the following code ?

package main

import (
    "context"
    "log"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

func main() {
    clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
    client, err := mongo.Connect(context.Background(), clientOptions)
    if err != nil {
        log.Fatal(err)
    }
    
    // Check the connection
    err = client.Ping(context.Background(), nil)
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println("Connected to MongoDB!")
}

In this code, we are creating a MongoDB client object by specifying the URI of the MongoDB server. We then use the mongo.Connect() function to connect to the database, passing in the context.Background() object as the first parameter.

Performing CRUD Operations

Insert Operation

Once we have connected to our MongoDB database using Go, we can start performing basic CRUD operations. The following code demonstrates how to insert a new document into a MongoDB collection ?

package main

import (
    "context"
    "fmt"
    "log"
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

func main() {
    // Connect to database
    clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
    client, err := mongo.Connect(context.Background(), clientOptions)
    if err != nil {
        log.Fatal(err)
    }
    
    collection := client.Database("mydb").Collection("users")
    
    user := bson.M{
        "name":  "John",
        "email": "john@example.com",
        "age":   30,
    }
    
    res, err := collection.InsertOne(context.Background(), user)
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println("Inserted document with ID:", res.InsertedID)
}

Read Operation

To retrieve documents from a MongoDB collection, use the following code ?

// Find one document
var result bson.M
err = collection.FindOne(context.Background(), bson.M{"name": "John"}).Decode(&result)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Found document:", result)

Update Operation

To update an existing document ?

filter := bson.M{"name": "John"}
update := bson.M{"$set": bson.M{"age": 31}}

updateResult, err := collection.UpdateOne(context.Background(), filter, update)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Matched %v documents and updated %v documents.\n", updateResult.MatchedCount, updateResult.ModifiedCount)

Delete Operation

To delete a document from the collection ?

deleteResult, err := collection.DeleteOne(context.Background(), bson.M{"name": "John"})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Deleted %v documents\n", deleteResult.DeletedCount)

Conclusion

Using Go with MongoDB is straightforward using the official MongoDB driver. The driver provides a clean API for connecting to databases and performing CRUD operations through the bson.M type for document representation. This combination enables building scalable web applications efficiently.

Updated on: 2026-03-15T03:58:54+05:30

593 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements