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

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:[email protected]: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)
}

原文地址:https://www.cnblogs.com/issac-fan/p/12681134.html

时间: 2024-08-29 16:14:48

Golang操作MongoDB(2) DAO - 增删改查的相关文章

使用MyEclipse对MongoDB数据库 进行增删改查操作

前面写了一篇MongoDB的下载与安装,接下来此篇写的是MongoDB数据库在JAVA程序中的基本功能: 使用MyEclipse对MongoDB数据库进行增删改查操作 1.导入JAR包 使用了Spring3.0:此类包,可以上网查询"MongoDB相关JAR包" 2.创建一个Person实体类 源代码如下: public class Person(){ //属性 Private String id; //id Private String name; //name Private in

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

nodejs对mongodb数据库的增删改查操作(转载)

首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-linux 另外可以参考我的另一篇博文 http://www.cnblogs.com/sexintercourse/p/5774310.html 指导mongo和nodejs的开发 然后下载nodejs的mongodb的driver npm install mongodb 编写一个测试的程序: 1 v

node.js对mongodb的连接&增删改查(附async同步流程控制)

1.启动mongodb数据库 官网下载mongodb数据库 在mongodb根目录下创建文件夹:假设取名为test. 我们认为test就是mongodb新建的数据库一枚. 创建批处理文件 xxx.bat,内容如下: 运行e盘mongodb文件夹下bin目录下的 mongod.exe,参数为 -dbpath E:\mongodb\test. E:\mongodb\bin\mongod.exe -dbpath E:\mongodb\test 这样就启动了mongodb下test数据库的服务器. 2.

EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)

前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订单表和员工表建立多对多关系. 首先是订单表: public class Order { public int OrderId { get; set; } public string OrderTitle { get; set; } public string CustomerName { get; set; } public DateTime TransactionDate

python操作redis--------------数据库增删改查

安装第三方模块redis import redis 一.连接数据库,操作增删改查 1.连接数据 (1).host必填 服务器IP(2).端口号默认的事6379,可以不填写,如果改成其他端口号,要填写 (3).密码默认不填写,如果自己设置了密码,要填写 (4).db必填 值是整数,表示第几个数据库 2.增删改查    操作string类型 (redis是一个键值对) 2.1增加/修改key-value值 可以设置失效时间,截图如下: 2.2查询数据 (1).通过get方法的key值,获取的valu

C#操作xml文档增删改查(Linq to XML)

1.创建xml 1 public static void CreateXmlDoc() 2 { 3 XElement myDoc = 4 new XElement("Customers", 5 new XElement("Customer", new XAttribute("ID", "1"), 6 new XElement("Usename", "Rock Zed"), 7 new X

小白5分钟上手c#数据库操作(二) 基础的增删改查

上一小节,我们已经准备好了一个数据库文件,现在我们先不用微软包装好的各种Entity Framework, 自己用基础的方法对数据库进行增删改查. 前期准备: 新建一个console工程,把上一小节的数据库拷贝到工程目录下,copy local 设置成true, 目录结构大致长这样: 然后添加一个nuget包,方面后面使用各种c#提供的方法: 基本上常用的操作里,查数据是一类,增删改是一类 先看怎么查数据: // 查询数据 using (var connection = new SQLiteCo

yii2 框架的 AR 和 DAO 增删改查

自己做个总结  方便以后查找使用 /** * yii 的增删改查 */ //增 public function add1($data) { $data = [ 'title'=>$data['YiiNews']['title'], 'msg'=>$data['YiiNews']['msg'], 'img'=>$data['News']['img'], ]; $this->setAttributes($data) ; return $this->insert(); } publ