Golang操作MongoDB(2) DAO - 增删改查
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Golang操作MongoDB(2) DAO - 增删改查,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3136字,纯文字阅读大概需要5分钟。
内容图文
![Golang操作MongoDB(2) DAO - 增删改查](/upload/InfoBanner/zyjiaocheng/522/27d05eb208da4f4da857563ac3a53eba.jpg)
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
本文系统来源:https://www.cnblogs.com/issac-fan/p/12681134.html
内容总结
以上是互联网集市为您收集整理的Golang操作MongoDB(2) DAO - 增删改查全部内容,希望文章能够帮你解决Golang操作MongoDB(2) DAO - 增删改查所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。