共计 4282 个字符,预计需要花费 11 分钟才能阅读完成。
MONGDB
装置与应用
咱们来回顾一下上次分享的内容:
- 如何应用
log
包 log
包原理和具体实现- 自定义日志
要是对 GO 的日志包还有点趣味的话,能够查看文章 GO 的日志怎么玩 ?
明天咱们来玩个简略的 mongodb
的装置和应用
MONGODB
介绍
MongoDB
是一个基于分布式文件存储的数据库应用
C++
语言编写
MongoDB
次要是 为 WEB 利用提供可扩大的高性能数据存储解决方案
是非关系数据库当中性能最丰盛,它反对的数据结构十分涣散,是相似 JSON
的 BSON
格局的
MONGODB
的语法有点相似于面向对象的查询语言,咱们用起来也是很简略的
mongodb
装置
下载 mongodb
安装包
网址:https://www.mongodb.com/try/d…
官网上能够下载多个零碎的 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
目录下
- 创立 data 目录
- data 目录下创立 db 目录
- data 目录下创立 log 目录
mkdir data
cd data
mkdir db
mkdir log
回到 mongo
目录下,创立 mongodb
的配置文件,mongodb.conf
,之后启动须要用到
须要在 mongodb.conf
下配置
- dbpath
数据库的数据寄存地位
- logpath
日志文件寄存地位
- logappend
日志是否以追加的形式
- port
端口号
- auth
是否须要认证
- fork
是否以守护过程的形式运行
-
bind
限度近程拜访的
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
对于防火墙
- 能够间接关闭系统的防火墙平时
- 防火墙关上端口 27017 端口,以便于客户端进行连贯 mongdb
对于 MONGODB
的状态查看
查问 mongodb
状态
ps aux |grep mongodb
查看端口
netstat -antp |grep 27017
敞开mongodb
有如下两种操作,随你选,喜爱啥用啥
- 通过 kill 命令杀掉
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'}]})
执行后,如下成果
Successfully added user: {
"user" : "admin2",
"roles" : [
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
}
]
}
接下来具体的 mongodb
数据库操作,能够看菜鸟教程学习一波,很快就会用了
https://www.runoob.com/mongod…
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 下载链接如下
https://robomongo.org/download
软件操作比较简单,大家下载下来后,相熟一下界面,就会应用了。
GOLANG
简略操作mongodb
mongodb
的驱动大家应用比拟多的有 2 种:
mongodb
官网的库,go.mongodb.org/mongo-driver/mongo
-
第三方库
gopkg.in/mgo.v2
地址为:http://labix.org/mgo
咱们选用官网的驱动库来介绍 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
数据库 - 抉择对应 库,和 表
- 插入一条数据 / 插入多条数据
- 更新一条数据 / 插入多条数据
- 查问新一条数据 / 插入多条数据
- 删除新一条数据 / 插入多条数据
对应数据库的根本利用还是非常简单的,然而咱们会利用之后,肯定要去细细品味其中的原理,官网 或者是第三方包是如何实现的,咱们本人是否能够本人写一个版本
感兴趣的小伙伴,能够尝试深刻一下
总结
- mongodb 的介绍
- mongodb 如何装置
- mongodb 如何简略应用
- GO 如何操作 mongodb
欢送点赞,关注,珍藏
敌人们,写作不易
你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是 小魔童哪吒,欢送点赞关注珍藏,下次见~