Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Using MongoDB with Go

Introduction

MongoDB is a popular NoSQL database, and the Go programming language (Golang) provides excellent support for working with MongoDB through the official MongoDB Go Driver. This tutorial will guide you through the steps to connect to a MongoDB database, perform CRUD operations, and manage data using Go.

Setting Up

To get started, you need to install the MongoDB Go Driver. You can install it using the following command:

Installing MongoDB Go Driver

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

Connecting to MongoDB

To connect to a MongoDB instance, use the following code:

Example: Connecting to MongoDB

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.TODO(), clientOptions)

    if err != nil {
        log.Fatal(err)
    }

    err = client.Ping(context.TODO(), nil)

    if err != nil {
        log.Fatal(err)
    }

    log.Println("Connected to MongoDB!")
}
            

CRUD Operations

CRUD stands for Create, Read, Update, and Delete. Here are examples of how to perform these operations using the MongoDB Go Driver:

Create

Inserting a Document

collection := client.Database("testdb").Collection("users")
user := bson.D{{"name", "John Doe"}, {"age", 30}}
insertResult, err := collection.InsertOne(context.TODO(), user)
if err != nil {
    log.Fatal(err)
}
log.Println("Inserted document with ID:", insertResult.InsertedID)
            

Read

Finding a Document

var result bson.D
err = collection.FindOne(context.TODO(), bson.D{{"name", "John Doe"}}).Decode(&result)
if err != nil {
    log.Fatal(err)
}
log.Println("Found document:", result)
            

Update

Updating a Document

update := bson.D{
    {"$set", bson.D{
        {"age", 31},
    }},
}
updateResult, err := collection.UpdateOne(context.TODO(), bson.D{{"name", "John Doe"}}, update)
if err != nil {
    log.Fatal(err)
}
log.Printf("Matched %v documents and updated %v documents.\n", updateResult.MatchedCount, updateResult.ModifiedCount)
            

Delete

Deleting a Document

deleteResult, err := collection.DeleteOne(context.TODO(), bson.D{{"name", "John Doe"}})
if err != nil {
    log.Fatal(err)
}
log.Printf("Deleted %v documents in the users collection\n", deleteResult.DeletedCount)
            

Conclusion

In this tutorial, you have learned how to use MongoDB with Go to perform basic CRUD operations. The MongoDB Go Driver provides powerful tools to interact with MongoDB databases, making it easier to integrate MongoDB into your Go applications.