摘要:如果删除所有用替换其他写了一个和结合的数据查询服务细节可点击链接到查看
1.系统环境
Golang:go version go1.10.3 darwin/amd64
OS:MacOS
MongoDB: version: 3.4.4
2.Golang使用MongoDB使用:gopkg.in/mgo.v2
获取包:go get gopkg.in/mgo.v2 引入:import "gopkg.in/mgo.v2"
mgo简介
3.简单使用MongoDB 3.1 数据设计 3.1.1 数据库设计:数据库名:mydb_tutorial
集合名: t_student
数据集合:t_student字段说明
字段 | 类型 | 说明 |
---|---|---|
name | string | 姓名 |
age | int | 年龄 |
sid | string | 学号 |
status | int | 状态:1正常,9,删除 |
type Student struct { Name string `bson: "name"` Age int `bson: "age"` Sid string `bson: "sid"` Status int `bson: "status"` } type Per struct { Per []Student }mgo简介
func Dial(url string) (*Session, error) 官方简介:Dial establishes a new session to the cluster identified by the given seed server(s).3.2 插入数据
mongo, err := mgo.Dial("127.0.0.1") // 建立连接 defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //选择数据库和集合 //创建数据 data := Student{ Name: "seeta", Age: 18, Sid: "s20180907", Status: 1, } //插入数据 cErr := client.Insert(&data) if cErr != nil { return false } return true
执行该段程序,MongoDB会出现一条记录:
3.3 查找数据在3.2插入数据的基础上,我们再插入一条数据:
data := Student{ Name: "seeta1", Age: 18, Sid: "s20180908", Status: 1, }3.3.1 findOne
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") user := Student{} //查找sid为 s20180907 cErr := client.Find(bson.M{"sid": "s20180907"}).One(&user) if cErr != nil { return false } fmt.Println(user) return true
执行该段程序,会打印查找到的结果:
{seeta 17 s20180907 1}3.3.2 findAll
查找status为1的数据
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //每次最多输出15条数据 iter := client.Find(bson.M{"status": 1}).Sort("_id").Skip(1).Limit(15).Iter() var stu Student var users Per for iter.Next(&stu) { users.Per = append(users.Per, stu) } if err := iter.Close(); err != nil { return false } fmt.Println(users) return true
执行该段程序,会打印查找到的结果:
{[{seeta1 18 s20180908 1} {seeta 18 s20180907 1}]}3.4 更新数据
更新数据前:
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //只更新一条 cErr := client.Update(bson.M{"status": 1}, bson.M{"$set": bson.M{"age": 20}}) if cErr != nil { return false } return true }
执行命令后:
只更新了一条数据的年龄
如果我们想把所有status为1的学生年龄都更新为20.
用client.UpdateAll 替换client.Update 就可以了3.5 删除数据
删除数据:sid为s20180907
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //只更新一条 cErr := client.Remove(bson.M{"sid": "s20180907"}) if cErr != nil { return false } return true
如果数据库设计的时候,有两个sid为s20180907 只会删除一条记录。
如果删除所有:用client.RemoveAll 替换client.Remove
写了一个gin和mgo结合的数据查询服务demo,细节可点击链接到github查看
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/19377.html
摘要:准备数据结构这个以对一个简单的通讯录进行插入查询更新删除记录为例,中包含和两个字段下载还没出官方的驱动包,是现在比较流行的第三方包,能找到的相关资料也比较多。准备实现对的增删改查操作,先想了下怎么写测试案例。查找,通过查找该条记录。 环境声明:go version go1.11MongoDB server version 4.0.3 背景 这是我第一次接触golang和MongoDB,...
摘要:为了在项目中更好的使用来完成我们的业务,我们探究了性能暴力的成因以及如何更加合理的使用。的出现能够快速的完成系统的开发于拓展需求。不同的业务会导致不同的数据库使用情况。缓存类型根据情况选择或高速度也是有代价的。转自初探暴力美学 AUTH:PHILO version:2.0 showImg(http://7viiaq.com1.z0.glb.clouddn.com/u=14409196...
摘要:总体介绍在互联网金融行业一百多亿其实也算不上大平台,也就是二级阵营吧,其实每次的架构升级都是随着业务重大推进而伴随的,在前一代系统架构上遇到的问题,业务开发过程中积累一些优秀的开发案例,在下一代系统开发中就会大力推进架构升级。 回想起从公司成立敲出的第一行代码算起到现在也快三年了,平台的技术架构,技术体系也算是经历了四次比较重大的升级转化(目前第四代架构体系正在进行中),临近年底也想抽...
摘要:总体介绍在互联网金融行业一百多亿其实也算不上大平台,也就是二级阵营吧,其实每次的架构升级都是随着业务重大推进而伴随的,在前一代系统架构上遇到的问题,业务开发过程中积累一些优秀的开发案例,在下一代系统开发中就会大力推进架构升级。 回想起从公司成立敲出的第一行代码算起到现在也快三年了,平台的技术架构,技术体系也算是经历了四次比较重大的升级转化(目前第四代架构体系正在进行中),临近年底也想抽...
阅读 3728·2021-11-24 09:39
阅读 3442·2019-08-30 15:56
阅读 1369·2019-08-30 15:55
阅读 1030·2019-08-30 15:53
阅读 1918·2019-08-29 18:37
阅读 3600·2019-08-29 18:32
阅读 3127·2019-08-29 16:30
阅读 2917·2019-08-29 15:14