Golang操作MongoDB(2) DAO - 增删改查

内容导读

互联网集市收集整理的这篇技术教程文章主要介绍了Golang操作MongoDB(2) DAO - 增删改查,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3136字,纯文字阅读大概需要5分钟

内容图文

package dao

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

// 数据结构体
type Student struct {
	Id int32
	Name string
	Age int
}

var (
	opt = "mongodb://root:root123@localhost:27018" //  带账号名的链接
 	name = "user1" // 数据库名
	maxTime = time.Duration(2) // 链接超时时间
	num uint64 = 50 // 链接数
	table = "student" // 表名
	toDB *mongo.Database // database 话柄
	collection *mongo.Collection // collection 话柄
	)

func init()  {
	var err error
	toDB, err = db.ConnectToDB(opt, name,maxTime,num)
	if err!= nil {
		panic("链接数据库有误!")
	}
	collection = toDB.Collection(table)
}

// GetList 获取全量的数据
func GetList()  {
	cur, err := collection.Find(context.Background(), bson.D{})
	if err != nil {
		log.Fatal(err)
	}
	if err := cur.Err(); err != nil {
		log.Fatal(err)
	}
	var all []*Student
	err = cur.All(context.Background(), &all)
	if err != nil {
		log.Fatal(err)
	}
	cur.Close(context.Background())

	log.Println("collection.Find curl.All: ", all)
	for _, one := range all {
		log.Println("Id:",one.Id," - name:",one.Name," - age:",one.Age)
	}
}

// AddOne 新增一条数据
func AddOne(s1 *Student)  {
	objId, err := collection.InsertOne(context.TODO(), &s1)
	if err != nil {
		log.Println(err)
		return
	}
	log.Println("录入数据成功,objId:",objId)
}

// EditOne 编辑一条数据
func EditOne(student *Student,m bson.M)  {
	update := bson.M{"$set": student}
	updateResult, err := collection.UpdateOne(context.Background(),  m, update)
	if err != nil {
		log.Fatal(err)
	}
	log.Println("collection.UpdateOne:", updateResult)
}

// 更新数据 - 存在更新,不存在就新增
func Update(student *Student,m bson.M)  {
	update := bson.M{"$set": student}
	updateOpts := options.Update().SetUpsert(true)
	updateResult, err := collection.UpdateOne(context.Background(), m, update, updateOpts)
	if err != nil {
		log.Fatal(err)
	}
	log.Println("collection.UpdateOne:", updateResult)
}

// 删除一条数据
func Del(m bson.M)  {
	deleteResult, err := collection.DeleteOne(context.Background(), m)
	if err != nil {
		log.Fatal(err)
	}
	log.Println("collection.DeleteOne:", deleteResult)
}

// Sectle 模糊查询
// bson.M{"name": primitive.Regex{Pattern: "深入"}}
func Sectle(m bson.M)  {
	cur, err := collection.Find(context.Background(), m)
	if err != nil {
		log.Fatal(err)
	}
	if err := cur.Err(); err != nil {
		log.Fatal(err)
	}

	for cur.Next(context.Background()) {
		var s Student
		if err = cur.Decode(&s); err != nil {
			log.Fatal(err)
		}
		log.Println("collection.Find name=primitive.Regex{xx}: ", s)
	}
	cur.Close(context.Background())
}

// 统计collection的数据总数
func Count()  {
	count, err := collection.CountDocuments(context.Background(), bson.D{})
	if err != nil {
		log.Fatal(count)
	}
	log.Println("collection.CountDocuments:", count)
}

// 准确搜索一条数据
func GetOne(m bson.M)  {
	var one Student
	err := collection.FindOne(context.Background(), m).Decode(&one)
	if err != nil {
		log.Fatal(err)
	}
	log.Println("collection.FindOne: ", one)
}

Golang操作MongoDB(2) DAO - 增删改查

标签:str   add   ati   name   ola   return   contex   链接   update   

内容总结

以上是互联网集市为您收集整理的Golang操作MongoDB(2) DAO - 增删改查全部内容,希望文章能够帮你解决Golang操作MongoDB(2) DAO - 增删改查所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。

内容手机端

扫描二维码推送至手机访问。