如何在mongodb中使用golang驱动?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

使用教程如下:

导入

gogetgithub.com/mongodb/mongo-go-driver/mongo

链接mongo服务

ifclient,err=mongo.Connect(getContext(),url);err!=nil{checkErr(err)}

判断服务是否可用

iferr=client.Ping(getContext(),readpref.Primary());err!=nil{checkErr(err)}

选择数据库和集合

collection=client.Database("testing_base").Collection("howie")

删除这个集合

collection.Drop(getContext())

插入一条数据

ifinsertOneRes,err=collection.InsertOne(getContext(),howieArray[0]);err!=nil{checkErr(err)}fmt.Printf("InsertOne插入的消息ID:%v\n",insertOneRes.InsertedID)

批量插入数据

ifinsertManyRes,err=collection.InsertMany(getContext(),howieArray);err!=nil{checkErr(err)}fmt.Printf("InsertMany插入的消息ID:%v\n",insertManyRes.InsertedIDs)

查询单条数据

iferr=collection.FindOne(getContext(),bson.D{{"name","howie_2"},{"age",11}}).Decode(&howie);err!=nil{checkErr(err)}fmt.Printf("FindOne查询到的数据:%v\n",howie)

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

iferr=collection.FindOneAndDelete(getContext(),bson.D{{"name","howie_3"}}).Decode(&howie);err!=nil{checkErr(err)}fmt.Printf("FindOneAndDelete查询到的数据:%v\n",howie)

询单条数据后修改该数据

iferr=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)

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

iferr=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从大到小排序的数据)

ifcursor,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)}iferr=cursor.Err();err!=nil{checkErr(err)}defercursor.Close(context.Background())forcursor.Next(context.Background()){iferr=cursor.Decode(&howie);err!=nil{checkErr(err)}howieArrayEmpty=append(howieArrayEmpty,howie)}fmt.Printf("Find查询到的数据:%v\n",howieArrayEmpty)

查询集合里面有多少数据

ifsize,err=collection.Count(getContext(),nil);err!=nil{checkErr(err)}fmt.Printf("Count里面有多少条数据:%d\n",size)

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

ifsize,err=collection.Count(getContext(),bson.M{"createtime":bson.M{"$gte":3}});err!=nil{checkErr(err)}fmt.Printf("Count里面有多少条数据:%d\n",size)

修改一条数据

ifupdateRes,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)

修改多条数据

ifupdateRes,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)

删除一条数据

ifdelRes,err=collection.DeleteOne(getContext(),bson.M{"name":"howie_1"});err!=nil{checkErr(err)}fmt.Printf("DeleteOne删除了多少条数据:%d\n",delRes.DeletedCount)

删除多条数据

ifdelRes,err=collection.DeleteMany(getContext(),bson.M{"createtime":bson.M{"$gte":7}});err!=nil{checkErr(err)}fmt.Printf("DeleteMany删除了多少条数据:%d\n",delRes.DeletedCount)

看完上述内容,你们掌握如何在mongodb中使用golang驱动的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!