我們們來回顧一下上次分享的內容:
- 如何使用
log
包 log
包原理和具體實現- 自定義日誌
要是對 GO 的日誌包還有點興趣的話,可以檢視文章 GO的日誌怎麼玩 ?
今天我們們來玩個簡單的 mongodb
的安裝和使用
MONGODB
介紹
MongoDB
是一個基於分散式檔案儲存的資料庫使用
C++
語言編寫
MongoDB
主要是 為WEB應用提供可擴充套件的高效能資料儲存解決方案
是非關聯式資料庫當中功能最豐富,它支援的資料結構非常鬆散,是類似 JSON
的 BSON
格式的
MONGODB
的語法有點類似於物件導向的查詢語言,我們們用起來也是很簡單的
mongodb
安裝
下載mongodb
安裝包
網址:www.mongodb.com/try/download/commu...
官網上可以下載多個系統的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
資料庫操作,可以看菜鳥教程學習一波,很快就會用了
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 下載連結如下
軟體操作比較簡單,大家下載下來後,熟悉一下介面,就會使用了。
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 協議》,轉載必須註明作者和本文連結