MONGDB
安装与使用咱们来回顾一下上次分享的内容:
log
包log
包原理和具体实现要是对 GO 的日志包还有点兴趣的话,可以查看文章 GO的日志怎么玩 ?
今天咱们来玩个简单的 mongodb
的安装和使用
MONGODB
介绍
MongoDB
是一个基于分布式文件存储的数据库使用
C++
语言编写
MongoDB
主要是 为WEB应用提供可扩展的高性能数据存储解决方案
是非关系数据库当中功能最丰富,它支持的数据结构非常松散,是类似 JSON
的 BSON
格式的
MONGODB
的语法有点类似于面向对象的查询语言,咱们用起来也是很简单的
mongodb
安装mongodb
安装包网址:www.mongodb.com/try/downloa…
官网上可以下载多个系统的mongdb
安装包,windows
,centos
,ubuntu
等等,如图
根据页面上的内容,咱们可以选择不同版本的,按需索取,默认咱们就做吃螃蟹的人吧,直接上最新的
MONGODB
软件mongodb
压缩包tar xvf mongodb-linux-x86_64-rhel80-4.4.4.tgz
mongodb
,并移动到 /usr/local
下mv mongodb-linux-x86_64-rhel80-4.4.4.tgz mongodb mv mongodb /usr/local/
mongodb
目录下mkdir data cd data mkdir db mkdir log
mongo
目录下,创建mongodb
的配置文件,mongodb.conf
,之后启动需要用到需要在mongodb.conf
下配置
数据库的数据存放位置
日志文件存放位置
日志是否以追加的方式
端口号
是否需要认证
是否以守护进程的方式运行
限制远程访问的ip
,不做限制的话可以写0.0.0.0
dbpath=/usr/local/mongodb/data/db logpath=/usr/local/mongodb/data/log/mongodb.log logappend=true port=27017 auth=true fork=true bind_ip=0.0.0.0
mongodb
可执行程序写入到/etc/profile 中,开机时会自动读取这个文件export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
mongodb
服务mongod -f /usr/local/mongodb/mongodb.conf
MONGODB
的状态查看mongodb
状态ps aux |grep mongodb
netstat -antp |grep 27017
mongodb
有如下两种操作,随你选,喜欢啥用啥
PID
即可mongod -f /usr/local/mongodb/mongodb.conf --shutdown
mongodb
设置角色、用户名、密码/usr/local/mongodb/mongodb.conf
的配置如下,我们可以吧auth
置为false
,auth
字段开启,是开启认证,关闭则是关闭认证mongodb
有多个角色角色 | |
用户 | read、readWrite |
管理员 | dbAdmin、dbOwner、userAdmin |
集群管理员 | clusterAdmin、clusterManager、clusterMonitor、hostManager |
备份恢复权限 | backup、restore |
所有数据库权限 | readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase |
超级用户 | root |
内部角色 | __system |
mongodb
数据库的使用use xxx
db.createUser({user:'admin2',pwd:'123456',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})
AnyDatabase',db:'admin'}]})
执行后,如下效果
Successfully added user: { "user" : "admin2", "roles" : [ { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }
接下来具体的mongodb
数据库操作,可以看菜鸟教程学习一波,很快就会用了
www.runoob.com/mongodb/mon…
mongodb
设置开机启动mongodb
的服务 到 init.d
中vim /etc/rc.d/init.d/mongod
start() { /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf } stop() { /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"details: $0 {start|stop|restart}" exit 1 esac
chmod +x /etc/rc.d/init.d/mongod
mongod
service mongod start
mongod
service mongod stop
mongod
service mongod restart
介绍一个可视化工具,非常好用,比nosql
这个工具好用多了
Robo 3T 1.3.1 下载链接如下
robomongo.org/download
软件操作比较简单,大家下载下来后,熟悉一下界面,就会使用了。
GOLANG
简单操作mongodb
mongodb
的驱动大家使用比较多的有2种:
mongodb
官方的库, go.mongodb.org/mongo-driver/mongo
gopkg.in/mgo.v2
我们选用官方的驱动库来介绍mongdb
简单的
type Test struct { Name string `bson:"name"` Age int `bson:"age"` CreateTime int64 `bson:"createTime"` UpdateTime int64 `bson:"updateTime"` } func initMongdb() error { // 1 建立mongodb连接 // 填写自己的mongdb地址,端口默认是 27017 clientOptions := options.Client().ApplyURI("mongodb://admin:123456@xxxx:27017/admin?authMechanism=SCRAM-SHA-1") mclient, err := mongo.Connect(context.TODO(), clientOptions) if err != nil { mlog.Error(err) return err } // 2, 选择数据库my_db database := mclient.Database("admin") // 3, 选择表my_collection collection := mgMongoDatabase.Collection("deviceToken") mlog.Info("connect mongdb successfully") // 插入数据 record := &Test{ Name: "小魔童", CreateTime: time.Now().Unix(), UpdateTime: time.Now().Unix(), } result, err := collection.InsertOne(context.TODO(), record) if err != nil { mlog.Error(err) return err } mlog.Info(result) // 更新数据 // if err := UpdateData(bson.M{"name": "xxxx"}, bson.D{{"$set", bson.M{"age": 15}}}); err != nil { // mlog.Error(err) // return // } //查询单个记录 //data := &DeviceToken{} //err = collection.FindOne(context.TODO(),bson.M{}).Decode(data) //mlog.Info(data) //查询所有记录 data := []DeviceToken{} cursor, err := collection.Find(context.TODO(), bson.M{}) cursor.All(context.TODO(), &data) mlog.Info(data) // 删除一条记录 //res ,err := mgMongoCollection.DeleteOne(context.TODO(),bson.M{"name":"xxxx"}) //if err != nil{ // mlog.Warn(err) //} return nil }
感兴趣的 XDM 可以多多实践,将上述代码贴到自己的环境查看效果,上述主要讲了如下几个操作:
mongodb
数据库对应数据库的基本应用还是非常简单的,但是我们会应用之后,一定要去细细品味其中的原理,官方 或者是第三方包是如何实现的,我们自己是否可以自己写一个版本
感兴趣的小伙伴,可以尝试深入一下