Golang学习系列第六天:操作MongoDB
0. ssh连接linux(我用的centos7),略
1. 安装MongoDB
可以直接到MongoDB官网https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat-tarball/根据样板安装:,可根据自己的电脑操作系统下载对应的版本,我下载的是mongodb-linux-x86_64-4.0.0.tgz安装包,不过也可以直接点击下面这个链接直接下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz,即
下载完毕后解压缩
名字那么长,可以进行重命名:
进入到mongodb主目录下:
分别建配置文件、数据目录、日志文件
建立配置文件
键入以下内容
注意路径根据自己电脑的实际情况填写
建立数据目录和日志文件
编辑环境配置
追加以下内容:
切记路径按实际情况写
启动mongodb测试
最后连接测试
为了安全起见,我们需要设置相应的用户名和密码。
创建数据库系统管理员
修改mongodb配置追加认证标志
然后重启mongodb服务
再次通过shell进入mongodb,创建需要管理的mongodb 数据的账号密码,此处是库是douyin,用户名是root,密码87654321
测试密码权限是否生效
先看失败的尝试案例
再看成功的案例
很好,权限认证通过了,可以查询数据记录
2. golang操作MongoDB
2.1 增加书籍接口
新建go文件mongdb-add.go,键入以下代码
然后就就执行以上程序,
打开postman测试
查询数据库是否已存在
2.2 查询单书籍接口
新建go文件mongdb-select.go,键入以下代码
执行程序
继续用postman测试接口
2.3 修改单书籍接口
新建go文件mongdb-update.go,键入以下代码
执行以上程序
postman继续测试
再此查询isbn为1234567890的信息
2.4 查询所有书籍接口
新建go文件mongdb-all.go,键入以下代码
运行该程序
打开postman或浏览器
2.5 删除单书籍接口
新建go文件mongdb-delete.go(根据isbn编号),键入以下代码
执行以上程序
用postman测试删除
然后去数据库查看是否还有该isbn为1234567890的书籍
最后加上一点,mongodb和其他数据库mysql、postgresql一样面临数据多需要分页的情况,类比2012年做的车辆GPS+3G视频监控调度系统(每辆车只要一启动开火,就会产生大量的视频数据,一运行,就会产生很多的gps数据上传到数据中心,可以通过系统实时查看车上的视频情况和运行轨迹),被央视广泛宣传推广。数据量不是一般的多!!!视频数据还好,一会月没有盗窃案件事件就删除了(那时没有大数据的理念,也没有用人工智能训练数据的初衷,并没有存下来,且存储和内存还是很贵的,不像现在服务器几十上百G内存、存储空间以T为单位),可每辆车每天的gps数据却是长久保存的,要是哪天想回看在地图上的历史轨迹,就要从很多数据里检索,有点像后来衍生出的ofo、摩拜、滴滴和其他共享车平台。
附代码已上传github: https://github.com/dongguangming/golang-learn/tree/master/go-mongodb
参考:
-
The myth of NoSQL (vs. RDBMS) “joins dont scale”
-
How To Install MongoDB on CentOS 7 https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-centos-7
-
mongodb设置密码 https://cloud.tencent.com/developer/article/1401326
-
MongoDB Configuration File Options https://docs.mongodb.com/manual/reference/configuration-options/#security-options
-
The
mongo
Shell https://docs.mongodb.com/manual/mongo/ - How To Build Microservice With MongoDB In Golang https://goinbigdata.com/how-to-build-microservice-with-mongodb-in-golang/
-
How to paginate with MongoDB https://rabbitoncode.com/big-data/2019/10/11/pagination-mongo/
-
API Paging Built The Right Way https://engineering.mixmax.com/blog/api-paging-built-the-right-way/
-
Golang, Gin & MongoDB – Building microservices easily https://blog.codecentric.de/en/2020/04/golang-gin-mongodb-building-microservices-easily/
-
Paging with the Bucket Pattern - Part 1 https://www.mongodb.com/blog/post/paging-with-the-bucket-pattern--part-1
-
海量数据的分页怎么破 https://mongoing.com/archives/25469
-
Pagination for MSSQL & MongoDB https://piotrgankiewicz.com/2016/04/19/pagination-for-mssql-mongodb/