如何在mongodb中使用golang驱动
如何在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驱动的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。