内容简介:数据库名:mydb_tutorial集合名: t_student
1.系统环境
- Golang:go version go1.10.3 darwin/amd64
- OS:MacOS
- MongoBD: version: 3.4.4
2.Golang使用MongoDB
使用:gopkg.in/mgo.v2
获取包:go get gopkg.in/mgo.v2 引入:import "gopkg.in/mgo.v2"
3.简单使用MongoDB
3.1 数据设计
3.1.1 数据库设计:
数据库名:mydb_tutorial
集合名: t_student
数据集合:t_student字段说明
字段 | 类型 | 说明 |
---|---|---|
name | string | 姓名 |
age | int | 年龄 |
sid | string | 学号 |
status | int | 状态:1正常,9,删除 |
3.1.2结构体设计:
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
4. 其他
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Docker - 入门(一),基础使用
- 一)redis 基础介绍与使用
- Java Properties类使用基础
- gitlab命令行使用(基础篇)
- 安卓SQLite基础使用指南
- 前端框架VUE的基础使用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人人都是产品经理2.0
苏杰 / 电子工业出版社 / 2017-5 / 66.6
《人人都是产品经理2.0——写给泛产品经理》继续定位在-1~3 岁的产品经理。这里特别要强调,“-1 岁”指的是“泛产品经理”群体,比如自认为是“产品新人”的“职场老人”,需要自己做产品的早期创业者,对产品感兴趣并且工作中可能要承担部分职责的技术、设计、运营等人员,其他行业对互联网产品感兴趣的从业者等,《人人都是产品经理2.0——写给泛产品经理》可以说是为他们量身定做的。 内容方面,《人人都......一起来看看 《人人都是产品经理2.0》 这本书的介绍吧!