SoFunction
Updated on 2025-03-05

Go implements the code example of mongodb addition, deletion, modification and search tool class

1. Driver download

mongodb official go introduction

Use Example/docs/drivers/go/current/fundamentals/connection/#connection-example

Quick Start/docs/drivers/go/current/quick-start/

To add, delete, modify and check mongodb, you need to add the corresponding go driver dependencies and install the command

go get /mongo-driver/mongo

2. Implement code

2.1 Mongodb tool class code

Encapsulated tool class

package dao
import (
	"context"
	"/mongo-driver/bson"
	"/mongo-driver/mongo"
	"/mongo-driver/mongo/options"
	"log"
	"time"
)
type MondoDao struct {
	client     *
	db         *
	collection *
}
func (dao *MondoDao) Connect(url string, db string, collection string) {
	var err error
	, err = ((), ().SetConnectTimeout(*10).ApplyURI(url))
	if err != nil {
		(err)
	}
	 = (db)
	 = (collection)
}
// Insert a linefunc (dao *MondoDao) InsertOne(obj any) (interface{}, error) {
	result, err := ((), obj)
	if err == nil {
		return , err
	}
	return nil, err
}
// Insert multiple rowsfunc (dao *MondoDao) InsertMany(objs []any) ([]interface{}, error) {
	result, err := ((), objs)
	if err != nil {
		return nil, err
	}
	return , nil
}
// Query a linefunc (dao *MondoDao) FindOne(filter , obj any) error {
	result := ((), filter)
	if () == nil {
		err := (obj)
		return err
	}
	return ()
}
// Query multiple linesfunc (dao *MondoDao) FindMany(filter , obj any) error {
	cursor, err := ((), filter)
	defer (())
	if err == nil {
		err = ((), obj)
	}
	return err
}
// Distributed query multiple rowsfunc (dao *MondoDao) FindManyByPage(filter , obj any, page int64, pagesize int64, sort ) error {
	options := ().SetSkip((page - 1) * pagesize).SetLimit(pagesize).SetSort(sort)
	cursor, err := ((), filter, options)
	defer (())
	if err == nil {
		err = ((), obj)
	}
	return err
}
// Delete a linefunc (dao *MondoDao) DeleteOne(filter ) (int64, error) {
	result, err := ((), filter)
	if err == nil {
		return , err
	}
	return 0, err
}
// Delete multiple linesfunc (dao *MondoDao) DeleteMany(filter ) (int64, error) {
	result, err := ((), filter)
	if err == nil {
		return , err
	}
	return 0, err
}
// Delete the collectionfunc (dao *MondoDao) DropCollection() error {
	err := (())
	//if err = nil {
	//	("drop collection %v", err)
	//}
	return err
}
// Update a linefunc (dao *MondoDao) UpdateOne(filter , update ) (int64, error) {
	result, err := ((), filter, update)
	if err == nil {
		return , err
	}
	return 0, err
}
// Update multiple linesfunc (dao *MondoDao) UpdateMany(filter , update ) (int64, error) {
	result, err := ((), filter, update)
	if err == nil {
		return , err
	}
	return 0, err
}
/**
 // Conditional query
 $lt is less than {"age": {"$lt": 20}}
 $gt is greater than {"age": {"$gt": 20}}
 $lte is less than or equal to {"age": {"$lte": 20}} {{"age", {{"$lte", 20}}}}
 $gte is greater than or equal to {"age": {"$gte": 20}}
 $ne does not equal {"age": {"$ne": 20}}
 $eq is equal, this symbol can be omitted {"age": {"$eq": 20}}, {"age": 20}
 $in in range {"age": {"$in": []int{16, 33}}}
 $nin is not in range {"age": {"$nin": []int{16, 33}}}
 //
 $inc Add and subtract the given numerical field number {"$inc": {"age": -5}}
 $set Sets the field value, and creates {"$set": {"age": 100}} if the field does not exist
 $unset Remove field {'$unset':{'Name':""}}
 */

2.2 Use examples

Use Example

package main
import (
	"fmt"
	"/mongo-driver/bson"
	"/mongo-driver/bson/primitive"
	"log"
	"mymongodb/dao"
)
type User struct {
	ID    `bson:"_id,omitempty"`
	Name string
	Age  int
}
func (s User) String() string {
	return ("%v %v %v", (), , )
}
func main() {
	dao := {}
	url := "mongodb://127.0.0.1:27017"
	(url, "gotest", "user")
	user1 := User{Name: "user1", Age: 66}
	id, _ := (user1)
	("InsertOne id:%v\n", (id.()).Hex())
	user2 := []any{
		User{Name: "user2", Age: 66},
		User{Name: "user3_3", Age: 76},
		User{Name: "user3_4", Age: 88},
	}
	ids, _ := (user2)
	for index, id := range ids {
		("InsertMany id:%v=%v\n", index, (id.()).Hex())
	}
	filter3 := {"name": "user2", "age": 66}
	var user3 User
	err := (filter3, &user3)
	("Findone user3:%v, %v\n", user3, err)
	var user4 []User
	filter4 := {"age": {"$gt": 60}}
	err4 := (filter4, &user4)
	if err4 == nil {
		for index, v := range user4 {
			("FindMany user4:%v, %v, \n", index, v)
		}
	}
	var users5 []User
	filter5 := {"age": {"$gt": 65}}
	sort := {"age": 1}
	err5 := (filter5, &users5, 1, 10, sort)
	if err5 == nil {
		for index, v := range users5 {
			("FindManyByPage user5:%v, %v\n", index, ())
		}
	}
	filter8 := {"name": "user2"}
	update8 := {"$inc": {"age": +6}}
	count8, err8 := (filter8, update8)
	("UpdateOne count:%v, %v\n", count8, err8)
	filter9 := {"$or": []{{"name": "user1"}, {"name": "user2"}}}
	update9 := {"$set": {"age": 90}}
	count9, err9 := (filter9, update9)
	("UpdateMany count:%v, %v\n", count9, err9)
	filter6 := {"name": "user1", "age": 90}
	deletecount6, err6 := (filter6)
	("DeleteOne count:%v, %v\n", deletecount6, err6)
	filter7 := {"age": {"$gte": 66}}
	deletecount7, err7 := (filter7)
	("DeleteMany count:%v, %v\n", deletecount7, err7)
	err10 := ()
	if err10 == nil {
		("drop Collection success!")
	} else {
		("drop collection error,%v", err)
	}
}

2.3 Operation effect

D:\project\go\gotest\sql\mongodb>go run
InsertOne id:64d32053a61a1841b70e129a
InsertMany id:0=64d32054a61a1841b70e129b
InsertMany id:1=64d32054a61a1841b70e129c
InsertMany id:2=64d32054a61a1841b70e129d
Findone user3:64d32054a61a1841b70e129b user2 66, <nil>
FindMany user4:0, 64d32053a61a1841b70e129a user1 66, 
FindMany user4:1, 64d32054a61a1841b70e129b user2 66, 
FindMany user4:2, 64d32054a61a1841b70e129c user3_3 76, 
FindMany user4:3, 64d32054a61a1841b70e129d user3_4 88, 
FindManyByPage user5:0, 64d32053a61a1841b70e129a user1 66
FindManyByPage user5:1, 64d32054a61a1841b70e129b user2 66
FindManyByPage user5:2, 64d32054a61a1841b70e129c user3_3 76
FindManyByPage user5:3, 64d32054a61a1841b70e129d user3_4 88
UpdateOne count:1, <nil>
UpdateMany count:2, <nil>
DeleteOne count:1, <nil>
DeleteMany count:3, <nil>
drop Collection success!

Summarize

This is the article about Go's implementation of mongodb's addition, deletion, modification and search tool category. For more related contents of Go mongodb's addition, deletion, modification and search tool category, please search for my previous articles or continue to browse the related articles below. I hope everyone will support me in the future!