This package (mgdb) provides a set of helper functions to simplify interaction with MongoDB from a Golang application. It includes connection handling, querying, inserting, updating, deleting documents, and working with distinct and random documents.
To use this package, install it using:
go get github.com/gocroot/mgdbThen, include the package in your Go project:
import "github.com/gocroot/mgdb"mconn := mgdb.DBInfo{
DBString: "mongodb+srv://username:password@cluster.mongodb.net/mydatabase",
DBName: "mydatabase",
}
db, err := mgdb.MongoConnect(mconn)
if err != nil {
log.Fatal(err)
}If u want to call inside a config folder
package config
import (
"os"
"github.com/gocroot/mgdb"
)
var mconn = mgdb.DBInfo{
DBString: os.Getenv("MONGOSTRING"),
DBName: "mydatabase",
}
var Mongoconn, ErrorMongoconn = mgdb.MongoConnect(mconn)doc := bson.M{"name": "John Doe", "age": 30}
id, err := mgdb.InsertOneDoc(db, "users", doc)
if err != nil {
log.Fatal(err)
}
fmt.Println("Inserted ID:", id)docs := []bson.M{
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 28},
}
ids, err := mgdb.InsertManyDocs(db, "users", docs)
if err != nil {
log.Fatal(err)
}
fmt.Println("Inserted IDs:", ids)filter := bson.M{"name": "John Doe"}
user, err := mgdb.GetOneDoc[struct {
Name string `bson:"name"`
Age int `bson:"age"`
}](db, "users", filter)
if err != nil {
log.Fatal(err)
}
fmt.Println("User:", user)filter := bson.M{} // Empty filter to get all documents
users, err := mgdb.GetAllDoc[[]struct{Name string `bson:"name"`; Age int `bson:"age"`}](db, "users", filter)
if err != nil {
log.Fatal(err)
}
fmt.Println("Users:", users)values, err := mgdb.GetAllDistinct[string](db, bson.M{}, "name", "users")
if err != nil {
log.Fatal(err)
}
fmt.Println("Distinct Names:", values)randomUsers, err := mgdb.GetRandomDoc[struct{Name string `bson:"name"`; Age int `bson:"age"`}](db, "users", 2)
if err != nil {
log.Fatal(err)
}
fmt.Println("Random Users:", randomUsers)filter := bson.M{"name": "John Doe"}
updateFields := bson.M{"age": 31}
_, err := mgdb.UpdateOneDoc(db, "users", filter, updateFields)
if err != nil {
log.Fatal(err)
}newUser := struct {
Name string `bson:"name"`
Age int `bson:"age"`
City string `bson:"city"`
}{"John Doe", 32, "New York"}
_, err := mgdb.ReplaceOneDoc(db, "users", filter, newUser)
if err != nil {
log.Fatal(err)
}_, err := mgdb.DeleteOneDoc(db, "users", filter)
if err != nil {
log.Fatal(err)
}_, err := mgdb.DeleteManyDocs(db, "users", bson.M{"age": bson.M{"$lt": 30}})
if err != nil {
log.Fatal(err)
}err := mgdb.DropCollection(db, "users")
if err != nil {
log.Fatal(err)
}type Hobby struct {
Name string `bson:"name"`
}
newHobby := Hobby{Name: "Cycling"}
_, err := mgdb.AddDocToArray[Hobby](db, "users", userID, "hobbies", newHobby)
if err != nil {
log.Fatal(err)
}hobbyToRemove := Hobby{Name: "Cycling"}
_, err := mgdb.DeleteDocFromArray[Hobby](db, "users", userID, "hobbies", hobbyToRemove)
if err != nil {
log.Fatal(err)
}filterCondition := bson.M{"name": "Cycling"}
updatedFields := bson.M{"name": "Mountain Biking"}
_, err := mgdb.EditDocInArray(db, "users", userID, "hobbies", filterCondition, updatedFields)
if err != nil {
log.Fatal(err)
}startDay, endDay := mgdb.GetYesterdayStartEnd()dateNow := mgdb.GetDateSekarang()todayFilter := mgdb.TodayFilter()
yesterdayFilter := mgdb.YesterdayFilter()
yesterdayNotHolidayFilter := mgdb.YesterdayNotLiburFilter()yesterdayNonHoliday := mgdb.GetDateKemarinBukanHariLibur()isHoliday := mgdb.HariLibur(time.Now())This package is open-source and available for use under the MIT License.
go get -u all
go mod tidy
git tag v0.1.2
git push origin --tags
go list -m github.com/gocroot/mgdb@v0.1.2