使用golang语言如何实现操作MongoDB数据库

  介绍

本篇文章为大家展示了使用golang语言如何实现操作MongoDB数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>安装MongoDB驱动程序

 mkdr mongodb
  cd mongodb
  去国防部init
  以前去go.mongodb.org/mongo-driver/mongo  

<强>连接MongoDB

创建一个main.go文件

将以下包导入main.go文件中

主要包
  
  导入(
  “context"
  “fmt"
  “log"
  “;go.mongodb.org/mongo-driver/bson"
  “;go.mongodb.org/mongo-driver/mongo"
  “;go.mongodb.org/mongo-driver/mongo/options"
  “time"
  )

连接MongoDB的URI格式为

MongoDB://(用户名:password@] host1[:端口1][…hostN [: portN]] [/[defaultauthdb][, # 63;选项]]

单机版

 mongodb://localhost: 27017 

副本集

mongodb://mongodb0.example.com: 27017年,mongodb1.example.com: 27017年,mongodb2.example.com: 27017/, # 63; replicaSet=myRepl

分片集群

mongodb://mongos0.example.com: 27017年,mongos1.example.com: 27017年,mongos2.example.com: 27017

mongo.Connect()接受上下文和options.ClientOptions对象,该对象用于设置连接字符串和其他驱动程序设置。
通过context.TODO()表示不确定现在使用哪种上下文,但是会在将来添加一个

使用平方法来检测是否已正常连接mongodb

函数main () {   clientOptions:=options.Client () .ApplyURI (“mongodb://admin: password@localhost: 27017“)   var ctx=context.TODO ()//连接到MongoDB   客户端,犯错:=mongo。clientOptions连接(ctx)   如果犯错!=nil {   log.Fatal (err)   }//检查连接   呃=客户。萍(ctx, nil)   如果犯错!=nil {   log.Fatal (err)   }   fmt.Println(“连接MongoDB !“)   推迟client.Disconnect (ctx)

列出所有数据库

数据库,犯错:=客户。ListDatabaseNames (ctx bson.M {})
  如果犯错!=nil {
  log.Fatal (err)
  }
  fmt.Println(数据库)

<强>在去中使用BSON对象

MongoDB中的JSON文档以称为BSON(二进制编码的JSON)的二进制表示形式存储。与其他将JSON数据存储为简单字符串和数字的数据库不同,BSON编码扩展了JSON表示形式,例如int,长时间,日期,浮点和decimal128。这使应用程序更容易可靠地处理,排序和比较数据.Go司机有两种系列用于表示BSON数据:D系列类型和原始系列类型。

D系列包括四种类型:

    <李> D: BSON文档。此类型应用在顺序很重要的场景下,例如MongoDB命令。 <李> M:无序地图。除不保留顺序外,与D相同。 <李>:一个BSON数组。 <李> E: D中的单个元素。
      李,

<>强插入数据到MongoDB

插入单条文档

//定义插入数据的结构体   sunshareboy struct类型{   名称字符串   年龄int   城市的字符串   }//连接到测试库的sunshare集合,集合不存在会自动创建   收藏:=client.Database (“test") .Collection (“sunshare")   如一:=sunshareboy {“wanger", 24岁,“北京“}   insertOne犯错:=collection.InsertOne (ctx,如一)   如果犯错!=nil {   log.Fatal (err)   }   fmt.Println(“插入一个文档:“insertOne.InsertedID)

执行结果如下,

! [] (https://s4.51cto.com/images/blog/202011/07/378adacb26314b3532fa8947e3516fc1.png& # 63; x-oss-process=/图像水印,size_16, text_QDUxQ1RP5Y2a5a6i, color_FFFFFF, t_100, g_se, x_10, y_10, shadow_90, type_ZmFuZ3poZW5naGVpdGk=)
# # # #同时插入多条文档
' ' '
收集:=client.Database (“test") .Collection (“sunshare")
东东:=sunshareboy{“张冬冬”,29日,“成都“}
huazai:=sunshareboy{“华仔”,28岁的“深圳“}
suxin:=sunshareboy{“素心“,24日,“甘肃“}
神=sunshareboy{“刘大仙“,24日,“杭州“}
qiaoke:=sunshareboy{“乔克”,29日,“重庆“}
江:=sunshareboy{“姜总“,24日,“上海“}
//插入多条数据要用到切片
男孩:=[]接口{}{东东,huazai suxin,上帝,qiaoke,江}
insertMany,犯错:=collection.InsertMany (ctx,男孩)
如果犯错!=nil {
,,,log.Fatal (err)
}
fmt.Println(“插入多个文档:“insertMany.InsertedIDs)

<强>从MongDB中查询数据

查询单个文档

查询单个文档使用collection.FindOne()函数,需要一个过滤器文档和一个可以将结果解码为其值的指针

使用golang语言如何实现操作MongoDB数据库