天天看點

MongoDB的小記(install)背景

背景

搭建資料庫測試環境(任何時候都需要按照官網的标準進行)

依賴

#版本4.2.8  tar包安裝
使用以下指令安裝MongoDB社群.tgz tarball 所需的依賴項:
yum -y install libcurl openssl
yum -y install libcurl openssl --allowerasing
#添加環境變量
PATH=/usr/local/mongodb4.2.8/bin:$PATH
           

編譯安裝使用到的配置檔案

mongod -f /usr/local/mongodb4.2.8/mongodb.conf & 

# cat /usr/local/mongodb4.2.8/mongodb.conf             
port=27017 

dbpath=/data/data/ 

logpath=/data/log/mongodb.log 


#fork=true 

logappend=true 

shardsvr=true

directoryperdb=true

#auth=true 
           

啟動

mongod --dbpath /data/data/ --logpath /data/log/mongod.log --fork
           
about to fork child process, waiting until server is ready for connections.
forked process: 291
child process started successfully, parent exiting
           

端口

lsof -i:27017
ps -ef|grep 291
           

進入控制台

mongo 
           

複制集

官網截圖(大概意思類似主從,實作讀寫分離。優點可以自動切換)

MongoDB的小記(install)背景
啟動方式:(或是-f)  重點是配置檔案
編譯安裝沒有配置檔案:從rpm安裝的主機上複制一份,并修改資料和日志目錄位置
#驗證指令
mongod --config /data/data/mongod.conf &
ps -ef|grep mongod
           
如果要搭建複制集(需要添加--replSet rs0 (rs0為名稱) )
mongod --config /data/data/mongod.conf --replSet rs0 &

隻在主節點上:
配置檔案
rs.config = {_id:"rs0",members:[ {_id:0,host:"192.168.68.60:27017"}, 
{_id:1,host:"192.168.68.61:27017"}, {_id:2,host:"192.168.68.62:27017",
arbiterOnly:true} ] }

初始化
rs.initiate({_id : "rs0", members : [{_id : 0, host : "192.168.68.60:27017"},]})

添加
rs.add("192.168.68.61:27017")
rs.add("192.168.68.62:27017")

檢視 ("ok" : 1,)才是正常的  目前是一主兩從(PRIMARY  ;SECONDARY )
rs.status()
rs.isMaster()

db.hostInfo()   #主機資訊

移除
rs.remove("192.168.68.61:27017")
           

測試

切換:
将Primary節點降級為Secondary節點 rs.stepDown()   

手動指定時間
myapp:PRIMARY> rs.stepDown(30)

主節點的提示符:
rs0:PRIMARY> 
從節點提示符:
rs0:SECONDARY>
           

重點:配置完成之後從庫(SECONDARY節點)需要執行rs.slaveOk() 才可以提供讀服務show dbs

補充

啟動服務:
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongo.conf  &
關閉:
/usr/local/mongodb/bin/mongod --shutdown --config  /usr/local/mongodb/conf/mongo.conf
 netstat -antpl | grep 27017
           
登入(如果你開啟看密碼認證,就需要用到admin庫)
方法一 use admin
db.auth('root','密碼');
方法二 mongo --host 192.168.1.66:27017 -u root -p 密碼 --authenticationDatabase admin

推薦方式:URI  (這種也是程式的登入方式,可以自動尋找主庫進行讀寫)
mongodb://dbabd:[email protected]:27017,192.168.90.112:27017,
192.168.90.113:27017/?authSource=admin&replicaSet=rs0  (rs0為複制集名)
           

簡單的CRUD

show databases  =  show dbs  
use 庫名  進庫   之後db. stats ()         //統計資料資訊
show collections   看表

>use test
>db.getCollectionNames ()    //查詢目前資料下所有的集合名稱
db.createCollection('table01')  建表

db.table01.drop()  删除表

db.user00.insert({'name':'lei','age':18})  插入1條資料  在 MongoDB 中,當插入文檔時,如果集合不存在,則 MongoDB 會隐式地自動建立集合,
WriteResult({ "nInserted" : 1 })

db.user00.find()  檢視表

db.user00.insert({_id:1,'name':'lei','age':18})

rs0:PRIMARY> db.user00.find()
{ "_id" : ObjectId("5f342016772920173f6ea2b2"), "name" : "lei", "age" : 18 }
{ "_id" : 1, "name" : "lei", "age" : 19 }  自定義_id  (不建議)

 插入3條資料
db.user00.insert([
{"name":"lei1","age":1},
{"name":"lei2","age":2},
{"name":"lei3","age":3}
])

 插入N條資料
for (var i=1;i<=10;i++){
db.user00.insert({"name":"a"+i,"age":i})
}
db.user00.find().sort({name: 1}) //查詢并排序

>db.test.find().limit(3)

建立單鍵索引的文法結構如下:
>db.collection.createlndex ( { key: 1 } )  //1 為升序,-1 為降序

複合索引可以支援在多個字段上進行的比對查詢,文法結構如下:
db.collection.createIndex ({ <key1> : <type>, <key2> : <type2>, ...})
需要注意的是,在建立複合索引的時候一定要注意順序的問題,順序不同将導緻查詢的結果也不相同。

如下語句建立複合索引:
>db.records.createIndex ({ "score": 1, "location.state": 1 })

檢視複合索引的查詢計劃的文法如下:
>db.records.find({score:1034, "location.state" : "NY"}).explain()

           

本文說明,主要技術内容來自網際網路技術大佬的分享,還有一些自我的加工(僅僅起到注釋說明的作用)。如有相關疑問,請留言,将确認之後,執行侵權必删​