MONGDB 安裝與使用

小魔童哪吒發表於2021-09-12

我們們來回顧一下上次分享的內容:

  • 如何使用log
  • log 包原理和具體實現
  • 自定義日誌

要是對 GO 的日誌包還有點興趣的話,可以檢視文章 GO的日誌怎麼玩 ?

今天我們們來玩個簡單的 mongodb 的安裝和使用

MONGODB介紹

MongoDB 是一個基於分散式檔案儲存的資料庫

使用 C++ 語言編寫

MongoDB 主要是 為WEB應用提供可擴充套件的高效能資料儲存解決方案

是非關聯式資料庫當中功能最豐富,它支援的資料結構非常鬆散,是類似 JSONBSON 格式的

MONGODB 的語法有點類似於物件導向的查詢語言,我們們用起來也是很簡單的

mongodb 安裝

下載mongodb安裝包

網址:www.mongodb.com/try/download/commu...

官網上可以下載多個系統的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 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置為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資料庫操作,可以看菜鳥教程學習一波,很快就會用了

www.runoob.com/mongodb/mongodb-cre...

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

    地址為: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

歡迎點贊,關注,收藏

朋友們,寫作不易

你的支援和鼓勵,是我堅持分享,提高質量的動力

好了,本次就到這裡

技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。

我是小魔童哪吒,歡迎點贊關注收藏,下次見~

本作品採用《CC 協議》,轉載必須註明作者和本文連結