go练习 day02

go中使用mongodb实现增删改查

连接mongodb

yaml配置
mongodb:uri: mongodb://localhost:27017
初始化连接
package confimport ("context""fmt""time""github.com/spf13/viper""go.mongodb.org/mongo-driver/mongo""go.mongodb.org/mongo-driver/mongo/options"
)func InitMongoDB() (*mongo.Client, error){ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)defer cancel()client, err := mongo.Connect(ctx, options.Client().ApplyURI(viper.GetString("mongodb.uri")))if err != nil {fmt.Printf("Mongodb 连接失败: %v", err)return nil, err }fmt.Println("Mongodb 连接成功")return client, nil
}
在初始化方法中调用
	// ===========================// =初始化Mongodb连接mdb, err := conf.InitMongoDB()global.MDB = mdb // 将db对象挂在到全局if err != nil {initErr = utils.AppendError(initErr, err)}
在DAO中挂载到BaseDao上
package daoimport ("king/global""go.mongodb.org/mongo-driver/mongo""gorm.io/gorm"
)type BaseDao struct {Orm *gorm.DBMDB *mongo.Client
}func NewBaseDao() BaseDao {return BaseDao{Orm: global.DB,MDB: global.MDB,}
}
新增操作:添加一条记录
func (m *RecordDao) AddRecord(iRecordAddDTO *dto.RecordAddDTO) error{var iRecord model.RecordiRecordAddDTO.ConverToModel(&iRecord)collection := m.MDB.Database("lowcode").Collection("lowcode")res, err := collection.InsertOne(context.Background(), iRecord)if err != nil { fmt.Println(err)return err}// 将 res.InsertedId 转换为字符串  if id, ok := res.InsertedID.(primitive.ObjectID); ok {  insertedIdString := id.Hex()  iRecordAddDTO.ID = insertedIdStringfmt.Println("Inserted ID:", insertedIdString)  } else {  fmt.Println("无法将 InsertedID 转换为 primitive.ObjectID 类型")  }  // 将字符串转换回ObjecrId  primitive.ObjectIDFromHex// oid, err := primitive.ObjectIDFromHex("64d492bbdc2330b9e0fdfcc1")// filter := bson.M{"_id": oid}// err = collection.FindOne(context.Background(), filter).Decode(&iRecord)return err
}
查找多条数据
//opts := options.Find().SetSort(bson.M{"enrollment": -1})
filter := bson.M{"_id": "64d492bbdc2330b9e0fdfcc1"}
res, err := collection.Find(context.Background(), filter)
res.All(context.TODO(), &resRecords)for _, result := range resRecords {fmt.Println(result, "-=-=====-----==1~~~~")
}
插入多条数据
type Person struct {name  stringage   inthobby []string
}
p1 := Person{name: "zs",age: 16,hobby: []string{"sport", "play"}
}p2 := Person{name: "ls",age: 20,hobby: []string{"write", "play"}
}
pList := []interface{}{p1, p2}
ior, err := collection.InsertMany(context.Background(), pList)
更新数据
t := bson.M{"_id": oid}
update := bson.M{"$set": bson.M{"title": "更新明细任务编号"}}result, err := collection.UpdateOne(context.Background(), t, update)
fmt.Println(result, "result========")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/33346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于kettle实现pg数据定时转存mongodb

mogodb 待创建 基于kettle实现pg数据定时转存mongodb_kettle 实时迁移 mongodb_呆呆的私房菜的博客-CSDN博客

MFC29-30天 补充中间遇到的一些小问题

宏定义中的#和##的含义&#xff1a; #include <Windows.h> #include <tchar.h> #include <iostream> #define Test(x,y) x##y //自动连接 xy #define T2(x) #x //自动转为字符串 "x"int main() {auto p Test(Message, Box);(*p)(NULL, _T(T2(Hel…

SQLSTATE[42000]: this is incompatible with sql_mode=only_full_group_by in

执行 SELECT *FROM test WHERE id>1 GROUP BY name having AVG(age)>10 ORDER BY id desc limit 1 提示错误 Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause…

C# winform 布局操作组件介绍

Winform布局 布局的2个属性 Anchor:锁定位置 Dock&#xff1a;填充位置 一般Dock是与容器控件配合使用 布局的一些控件 TableLayoutPanel&#xff1a;表格容器 每个表格只能放一个控件 要放置多个时可以在每个表格里面添加一个Panel&#xff08;也可以是其他的容器&#x…

git一次错误merge的回滚

场景&#xff1a;提交到sit的代码&#xff0c;结果解决冲突merge了DEV的代码&#xff0c;所以要回滚到合并之前的代码 &#xff08;原因是我再网页上处理了冲突&#xff0c;他就自动merge了,如图—所以还是idea处理冲突&#xff0c;可控&#xff09; 方式二&#xff1a; &…

✅最新!自然指数中国科研机构百强名单,出炉!

【SciencePub学术】8 月 9 日&#xff0c;自然指数官网发布了最新的中国科研机构百强名单。名单根据各大机构2022年在自然科学领域的论文贡献份额进行排名。 其中&#xff0c;中国科学院以2053.76的论文贡献份额&#xff0c;位列榜首&#xff1b;中国科学院大学和中国科学技术…

PAT1044 Shopping in Mars

个人学习记录&#xff0c;代码难免不尽人意。 做了这么多题难得本题不看答案一遍过&#xff0c;很是激动。 Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the pa…

c++ | win vscode

vscode 适合新手做一些简单的单个的编译和调试 新手适合去配置c 环境&#xff0c;尤其是当涉及复杂一点的编程&#xff0c;如多文件、多线程&#xff0c;在调试的时候会头大&#xff0c;要求会高一点 但怎么说呢&#xff1f; c 编译和调试是最接近实际开发环境的&#xff0c;与…

06-2_Qt 5.9 C++开发指南_自定义对话框及其调用

本篇介绍到的对话框及其调用实例较为复杂但十分详细&#xff0c;如果做了解可以先参考&#xff1a;QT从入门到实战x篇_13_模态和非模态对话框创建。 文章目录 1. 对话框的不同调用方式2. 对话框QWDialogSize 的创建和使用2.1 创建对话框QWDialogSize2.2 对话框的调用和返回值 …

css内容达到最底部但滚动条没有滚动到底部

也是犯了一个傻狗一样的错误 &#xff0c;滚动条样式是直接复制的蓝湖的代码&#xff0c;有个高度&#xff0c;然后就出现了这样的bug 看了好久一直以为是布局或者overflow的问题&#xff0c;最后发现是因为我给这个滚动条加了个高度&#xff0c;我也是傻狗一样的&#xff0c;…

Vuex 使用教程

Vuex 各子模块的内部结构及作用 这是vuex的内部代码结构&#xff0c;所有的子模块都是一样的 state&#xff1a;存放数据状态&#xff1b; action&#xff1a;指派 mutation &#xff1b; mutation&#xff1a;修改state里面的状态&#xff1b; getter&#xff1a;侧重于对数据…

Mongodb:业务应用(2)

需求&#xff1a; 1、获取保存到mongodb库中的搜索记录列表 2、实现删除搜索记录接口 保存搜索记录数据参考上篇Mongodb&#xff1a;业务应用&#xff08;1&#xff09;_Success___的博客-CSDN博客 获取记录列表 1、创建controller package com.heima.search.controller.v1;…

模拟队列(c++题解)

实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 xx&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现在要对队列进行 MM 个操作&#xff0c;其中的…

GD32F103硬件I2C0通讯

GD32F103的I2C模块有I2C0和I2C1;本程序使用I2C0功能模块; I2C0引脚复用和重映射: 当I2C0_REMAP0时,I2C0引脚复用功能,I2C0_SCL映射到PB6引脚,I2C0_SDA映射到PB7引脚; 当I2C0_REMAP1时,I2C0引脚重映射,I2C0_SCL映射到PB8引脚,I2C0_SDA映射到PB9引脚; I2C1引脚只有复用引脚: I2C…

学习笔记-JVM-对象结构及生命周期

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 对象的创建流程 常量池检查:检查new指令是否能在常…

【2023最新美团笔试题目分析】“求最多出现数字及次数“、坦克大战在线对战游戏(问题描述 + 示例代码 + 时间复杂度分析)

弃幼少嬉戏堕慢之心,而衎衎于进德修业之志。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区特邀专家博主

helm 制作应用的离线安装包

helm 制作应用的离线安装包 1、安装helm 到helm下载对应的压缩包&#xff1a;https://github.com/helm/helm/releases 解压&#xff0c;将helm文件cp到/usr/local/bin/ 文件夹下&#xff0c;查看helm版本&#xff1b;不同的k8s对应不同的helm版本&#xff0c;下载时留心注意…

构建Docker容器监控系统(Cadvisor +InfluxDB+Grafana)

目录 案例概述 Cadvisor InfluxDBGrafana 1.1、 Cadvisor 1.2、InfluxDB 1.3、Grafana 1.4、监控组件架构 1.5、开始部署 安装docker-ce 阿里云镜像加速器 创建自定义网络 创建influxdb容器 案例概述 Docker作为目前十分出色的容器管理技术&#xff0c;得到大量企业…

【博客696】iptables中的-m addrtype --dst-type含义

iptables中的-m addrtype --dst-type含义 场景&#xff1a; 使用docker容器时&#xff0c;一定会在iptables的NAT表中看到下在这样的一条配置规则&#xff1a; -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER-m addrtype --dst-type解析 1、-m addrtype iptables提…

如何使用webpack打包一个库library,使用webpack打包sdk.

如何使用webpack打包一个库library 如果你需要自己封装一些包给别人使用,那么可以参考以下方法 初始化库 mkdir library cd library npm init -y经过以上步骤后会生成一个library文件夹&#xff0c;里面包含一个package.json文件。然后简单修改为如下所示&#xff1a; {&qu…