golang访问mongodb
来源:互联网 发布:雷蛇淘宝假的 编辑:程序博客网 时间:2024/06/05 22:59
redis、mongodb是最近几年比较兴起的nosql,nosql的意思是not just sql。最近听到一位mongodb的专家说,为什么最近非关系型数据库会火起来,主要是由于现在的存储成本较低了,关系型数据库的产生主要是以前存储成本比较高,在存储的时候需要死扣字段以做到存储效率最大化。大多数应用中,加上很多复杂的关系,还不如直接全量的存储。比如图片、视频、文章等,可以直接存入数据库即可。
golang访问mongobd可以使用mgo。其中:
官方网站:mgo官网
文档地址:API接口文档
按照驱动命令:
go get labix.org/v2/mgo
**
安装、配置mongodb*
*
笔者使用docker容器拉一个mongodb的镜像,可以省去很多按照、配置的步骤。
1、拉取一个mongodb的镜像。
$ docker pull mongoUsing default tag: latestlatest: Pulling from library/mongod13d02fa248d: Pull completebc8e2652ce92: Pull complete3cc856886986: Pull completec319e9ec4517: Pull completeb4cbf8808f94: Pull completecb98a53e6676: Pull completef0485050cd8a: Pull completeac36cdc414b3: Pull complete61814e3c487b: Pull complete523a9f1da6b9: Pull complete3b4beaef77a2: Pull completeDigest: sha256:2c55bcc870c269771aeade05fc3dd3657800540e0a48755876a1dc70db1e76d9Status: Downloaded newer image for mongo:latest
2、启动mongodb容器
由于这边只是做演示,就不配置容器的存储了。
$ docker run --name my-mongo -p 27017:27017 -d mongo:latest --auth14ba862fb9f6a4f4b9c965a9772c6815a4a0c9dcc3f1a9d4a9784fc705d6781d
3、为用户访问增加用户
1)进入容器,打开数据库
$ docker exec -it 14ba862fb9f6 /bin/bashroot@14ba862fb9f6:/# mongo
2)增加一个用户
> use adminswitched to db admin> db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})Successfully added user: { "user" : "root", "roles" : [ { "role" : "root", "db" : "admin" } ]}> quitfunction quit() { [native code]}> exit
4、用mongo客户端测试链接
测试golang访问mongodb
当本地可以用客户端链接上docker上的mongodb后说明数据库和网络没有问题。
官网上的例子如下:
package mainimport ( "fmt" "log" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson")type Person struct { Name string Phone string}func main() { session, err := mgo.Dial("server1.example.com,server2.example.com") if err != nil { panic(err) } defer session.Close() // Optional. Switch the session to a monotonic behavior. session.SetMode(mgo.Monotonic, true) c := session.DB("test").C("people") err = c.Insert(&Person{"Ale", "+55 53 8116 9639"}, &Person{"Cla", "+55 53 8402 8510"}) if err != nil { log.Fatal(err) } result := Person{} err = c.Find(bson.M{"name": "Ale"}).One(&result) if err != nil { log.Fatal(err) } fmt.Println("Phone:", result.Phone)}
修改链接url后,测试的时候会发现用户认证不了。加上对应的验证后代码如下:
package mainimport ( "fmt" "log" "time" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson")type Person struct { Name string Phone string}func main() { fmt.Println("hello world") dialInfo := &mgo.DialInfo{ Addrs: []string{"192.168.99.100"}, Direct: false, Timeout: time.Second * 1, Database: "admin", Source: "admin", Username: "root", Password: "root", PoolLimit: 4096, // Session.SetPoolLimit } session, err := mgo.DialWithInfo(dialInfo) if err != nil { panic(err) } defer session.Close() session.SetMode(mgo.Monotonic, true) c := session.DB("admin").C("test") err = c.Insert(&Person{"Ale", "+55 53 8116 9639"}, &Person{"Cla", "+55 53 8402 8510"}) if err != nil { log.Fatal(err) } result := Person{} err = c.Find(bson.M{"name": "Ale"}).One(&result) if err != nil { log.Fatal(err) } fmt.Println("Phone:", result.Phone)}
输出结果:
Phone: +55 53 8116 9639
说明已经验证成功,并且可以插入读取了。
到数据库中查看插入内容:
后续将把mgo的API列举熟悉下,类似golang访问redis一样。
阅读全文
0 0
- golang访问mongodb
- golang操作mongodb
- golang连接mongodb
- golang mongodb Aggregate
- golang mongodb upsert
- 如何访问 golang.org
- golang.org 不能访问
- Golang 网站访问计数器
- golang 使用mgo 连接MongoDB
- Golang 使用Mongodb之pipe
- golang ODBC 访问access数据库
- golang.org不能访问解决方法
- Golang MongoDB 驱动 mgo 的若干问题
- Go实战--golang中使用MongoDB(mgo)
- MongoDB数据访问
- MongoDB 访问控制
- Nginx访问MongoDB
- MongoDB 访问控制
- 关于代码一些优化
- System类详解-3 volatile关键字 shutdownhooks 字符串连接符(+)问题
- Request和Response
- OpenGL学习一:点与线
- 【视频】经历五个双11,逼死50个设计师,今年没人肯干,怎么办?
- golang访问mongodb
- Java读书笔记——01 环境配置
- SourcTree导入ssh private key
- Windows 7平台基于Hadoop hdfs的中文分词统计和排序
- 项目总结(6) 关于安卓和苹果系统的区分,关于弹性布局的样式和字间距的样式
- Eclipse下Tomcat启动超时报错
- 详解蔬菜自动售货机的结构设计原理
- java学习路线图
- 项目1:分支结构程序设计体验