mongodb官方的golang驱动基础使用教程分享
程序员文章站
2022-03-08 10:48:39
前言
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详细用法
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: 苹果关闭iOS 12.2降级通道!
下一篇: TypeScript使用HashMap