GORM is a popular ORM library primarily designed for SQL databases such as MySQL, PostgreSQL, and SQLite. For NoSQL databases like MongoDB, GORM does not natively support. MongoDB is typically accessed using its official Go driver go.mongodb.org/mongo-driver. If you wish to achieve a GORM-like experience when working with MongoDB in your Go project, consider alternative libraries such as go-mongo or monger, which provide ORM-like interfaces for MongoDB operations.
Below, I will demonstrate how to perform basic database operations using the official MongoDB Go driver:
1. Installing the MongoDB Go Driver
First, install the MongoDB Go driver:
bashgo get go.mongodb.org/mongo-driver/mongo go get go.mongodb.org/mongo-driver/mongo/options
2. Connecting to MongoDB
Next, we'll write code to connect to the MongoDB database:
gopackage main import ( "context" "fmt" "log" "time" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // Set client options clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") // Connect to MongoDB ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() client, err := mongo.Connect(ctx, clientOptions) if err != nil { log.Fatal(err) } // Check connection err = client.Ping(context.Background(), nil) if err != nil { log.Fatal(err) } fmt.Println("Connected to MongoDB!") }
3. Inserting Documents
After connecting to the database, you can perform data operations such as inserting documents:
gocollection := client.Database("mydb").Collection("users") newUser := bson.D{ {Key: "name", Value: "John"}, {Key: "age", Value: 30}, } insertResult, err := collection.InsertOne(context.Background(), newUser) if err != nil { log.Fatal(err) } fmt.Println("Inserted a single document: ", insertResult.InsertedID)
4. Querying Documents
To query the previously inserted document, use the following code:
govar result bson.D err = collection.FindOne(context.Background(), bson.D{{Key: "name", Value: "John"}}).Decode(&result) if err != nil { log.Fatal(err) } fmt.Printf("Found a single document: %+v\n", result)
This demonstrates how to perform basic database operations using the official MongoDB Go driver. If you truly require a GORM-like experience, you may need to consider using third-party libraries or implementing an ORM layer yourself.