本篇文章为大家展示了使用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: 27017mongo.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数据库