欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mongodb官方的golang驱动基础使用教程分享

程序员文章站 2022-06-15 09:30:57
前言 mongo数据库在nodejs平台有2个常用驱动,mongodb和mongoose,mongodb接口非常接近mongo数据库原生的操作方式,是helloworld...

前言

mongo数据库在nodejs平台有2个常用驱动,mongodb和mongoose,mongodb接口非常接近mongo数据库原生的操作方式,是helloworld之类演示代码的首选mongo数据库连接驱动,因此成为大部分nodejs初学者最先接触的mongo数据库驱动。初学者在学会mongo连接的同时,却也可悲的被helloword这种演示性质的数据库操作习惯潜移默化了。

本文主要介绍的是关于mongodb官方的golang驱动使用的相关内容,下面话不多说了,来一起看看详细的介绍吧

使用教程如下:

导入

go get github.com/mongodb/mongo-go-driver/mongo

链接mongo服务

if client, err = mongo.connect(getcontext(), url); err != nil {
  checkerr(err)
 }

判断服务是否可用

if err = client.ping(getcontext(), readpref.primary()); err != nil {
  checkerr(err)
 }

选择数据库和集合

collection = client.database("testing_base").collection("howie")

删除这个集合

collection.drop(getcontext())

插入一条数据

if insertoneres, err = collection.insertone(getcontext(), howiearray[0]); err != nil {
  checkerr(err)
 }
 fmt.printf("insertone插入的消息id:%v\n", insertoneres.insertedid)

批量插入数据

if insertmanyres, err = collection.insertmany(getcontext(), howiearray); err != nil {
  checkerr(err)
 }
 fmt.printf("insertmany插入的消息id:%v\n", insertmanyres.insertedids)

查询单条数据

if err = collection.findone(getcontext(), bson.d{{"name", "howie_2"}, {"age", 11}}).decode(&howie); err != nil {
  checkerr(err)
 }
 fmt.printf("findone查询到的数据:%v\n", howie)

查询单条数据后删除该数据

if err = collection.findoneanddelete(getcontext(), bson.d{{"name", "howie_3"}}).decode(&howie); err != nil {
  checkerr(err)
 }
 fmt.printf("findoneanddelete查询到的数据:%v\n", howie)

询单条数据后修改该数据

if err = collection.findoneandupdate(getcontext(), bson.d{{"name", "howie_4"}}, bson.m{"$set": bson.m{"name": "这条数据我需要修改了"}}).decode(&howie); err != nil {
  checkerr(err)
 }
 fmt.printf("findoneandupdate查询到的数据:%v\n", howie)

查询单条数据后替换该数据(以前的数据全部清空)

if err = collection.findoneandreplace(getcontext(), bson.d{{"name", "howie_5"}}, bson.m{"hero": "这条数据我替换了"}).decode(&howie); err != nil {
  checkerr(err)
 }
 fmt.printf("findoneandreplace查询到的数据:%v\n", howie)

一次查询多条数据(查询createtime>=3,限制取2条,createtime从大到小排序的数据)

if cursor, err = collection.find(getcontext(), bson.m{"createtime": bson.m{"$gte": 2}}, options.find().setlimit(2), options.find().setsort(bson.m{"createtime": -1})); err != nil {
  checkerr(err)
 }
 if err = cursor.err(); err != nil {
  checkerr(err)
 }
 defer cursor.close(context.background())
 for cursor.next(context.background()) {
  if err = cursor.decode(&howie); err != nil {
   checkerr(err)
  }
  howiearrayempty = append(howiearrayempty, howie)
 }
 fmt.printf("find查询到的数据:%v\n", howiearrayempty)

查询集合里面有多少数据

if size, err = collection.count(getcontext(), nil); err != nil {
  checkerr(err)
 }
 fmt.printf("count里面有多少条数据:%d\n", size)

查询集合里面有多少数据(查询createtime>=3的数据)

if size, err = collection.count(getcontext(), bson.m{"createtime": bson.m{"$gte": 3}}); err != nil {
  checkerr(err)
 }
 fmt.printf("count里面有多少条数据:%d\n", size)

修改一条数据

if updateres, err = collection.updateone(getcontext(), bson.m{"name": "howie_2"}, bson.m{"$set": bson.m{"name": "我要改了他的名字"}}); err != nil {
  checkerr(err)
 }
 fmt.printf("updateone的数据:%d\n", updateres)

修改多条数据

if updateres, err = collection.updatemany(getcontext(), bson.m{"createtime": bson.m{"$gte": 3}}, bson.m{"$set": bson.m{"name": "我要批量改了他的名字"}}); err != nil {
  checkerr(err)
 }
 fmt.printf("updatemany的数据:%d\n", updateres)

删除一条数据

if delres, err = collection.deleteone(getcontext(), bson.m{"name": "howie_1"}); err != nil {
  checkerr(err)
 }
 fmt.printf("deleteone删除了多少条数据:%d\n", delres.deletedcount)

删除多条数据

if delres, err = collection.deletemany(getcontext(), bson.m{"createtime": bson.m{"$gte": 7}}); err != nil {
  checkerr(err)
 }
 fmt.printf("deletemany删除了多少条数据:%d\n", delres.deletedcount)

完整演示代码

查看mongo bson详细用法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。