MONGDB 装置与应用

咱们来回顾一下上次分享的内容:

  • 如何应用log
  • log 包原理和具体实现
  • 自定义日志

要是对 GO 的日志包还有点趣味的话,能够查看文章 GO的日志怎么玩 ?

明天咱们来玩个简略的 mongodb 的装置和应用

MONGODB介绍

MongoDB 是一个基于分布式文件存储的数据库

应用 C++ 语言编写

MongoDB 次要是 为WEB利用提供可扩大的高性能数据存储解决方案

是非关系数据库当中性能最丰盛,它反对的数据结构十分涣散,是相似 JSONBSON 格局的

MONGODB 的语法有点相似于面向对象的查询语言,咱们用起来也是很简略的

mongodb 装置

下载mongodb安装包

网址:https://www.mongodb.com/try/d...

官网上能够下载多个零碎的mongdb安装包,windowscentosubuntu等等,如图

依据页面上的内容,咱们能够抉择不同版本的,按需索取,默认咱们就做吃螃蟹的人吧,间接上最新的

装置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 mongodbmv mongodb /usr/local/

进入mongodb目录下

  • 创立data目录
  • data目录下创立db目录
  • data目录下创立log目录
mkdir datacd datamkdir dbmkdir log

回到mongo目录下,创立mongodb的配置文件,mongodb.conf,之后启动须要用到

须要在mongodb.conf下配置

  • dbpath

数据库的数据寄存地位

  • logpath

日志文件寄存地位

  • logappend

日志是否以追加的形式

  • port

端口号

  • auth

是否须要认证

  • fork

是否以守护过程的形式运行

  • bind

    限度近程拜访的ip,不做限度的话能够写0.0.0.0

dbpath=/usr/local/mongodb/data/dblogpath=/usr/local/mongodb/data/log/mongodb.loglogappend=trueport=27017auth=truefork=truebind_ip=0.0.0.0

mongodb可执行程序写入到/etc/profile 中,开机时会主动读取这个文件

export MONGODB_HOME=/usr/local/mongodbexport 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置为falseauth字段开启,是开启认证,敞开则是敞开认证

  • 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 1esac
  • 对这个服务的可执行程序增加执行权限
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

欢送点赞,关注,珍藏

敌人们,写作不易

你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

我是小魔童哪吒,欢送点赞关注珍藏,下次见~