mongodb dba常用的nosql語句

lusklusklusk發表於2019-05-28

檢視幫忙命令

>hlep  --server級別

>db.help()  --db級別

>db. collectionname .help()   --集合級別


檢視所有資料庫

>show dbs

--新建的資料庫並不在資料庫的列集合中,要顯示它,我們需要向新建的資料庫建立集合。


檢視當前資料庫

>db


建立資料庫

>use DATABASE_NAME


切換到某個資料

>use DATABASE_NAME


刪除當前資料庫,會把磁碟上的資料庫檔案一併刪除

>db.dropDatabase()


修復資料庫

> db.repairDatabase()


複製資料庫test為test999

> db.copyDatabase('test','test999')


檢視所有集合(關係型資料庫叫表)

>show collections

>show tables


檢視各集合的狀態

> db.printCollectionStats()


新建集合

db.createCollection("集合名", {集合的大小屬性:大小值,集合的增長屬性:增長值,集合的最大容量屬性:最大容量值,,,等等})

>db.createCollection("table1")


刪除集合table1

>db.table1.drop()


重新命名集合table1為table101

>db.table1.renameCollection("table101")


檢視集合table1的所在的資料庫名稱

>db.table1.getDB()


檢視集合table1的狀態

> db.table1.stats()


查詢集合

>db.table1.find() --查詢集合的所有資料

>db.table1.findOne() --查詢集合的第一條資料

>db.table1.count() --總行數

>db.table1.totalSize() --集合的總大小

>db.table1.storageSize() --集合的儲存空間大小

>db.table1.distinct("hid") --只查詢列hid,並列出該列的不重複的值

>db.table1.find({"hid":2}) --hid=2

>db.table1.find({"hid":2,"hid2":3}) --hid=2 and hid2=3

>db.table1.find({$or:[{"hid":2},{"hid2":3}]}) --hid=2 or hid2=3

>db.table1.find({"hid":{$gt:1}}) --hid>1

>db.table1.find({"hid":{$gte:1}}) --hid>=1

>db.table1.find({"hid":{$lt:2}}) --hid<2

>db.table1.find({"hid":{$lte:2}}) --hid<=2

>db.table1.find({"hid":/2/}) --hid like '%2%'

>db.table1.find({"hid":/^2/}) --hid like '2%'

>db.table1.find({},{"hid":1,"go2":1}) --查詢指定的兩列hid和go2

>db.table1.find({"hid":23},{"hid":1,"go2":1}) --select hid,go2 from table1 where hid=23

>db.table1.find({},{"hid":true,"go2":true})--查詢指定的兩列hid和go2

>db.table1.find({"hid":23},{"hid":true,"go2":true})--select hid,go2 from table1 where hid=23

>db.table1.find().sort({"hid":1}) --查詢結果按hid欄位順序排序

>db.table1.find().sort({"hid":-1}) --查詢結果按hid欄位降序排序

>db.table1.find().limit(2) --查詢前兩條資料

>db.table1.find().skip(2) --查詢第2條以後的所有資料

>db.table1.find().limit(3).skip(2) --查詢第2條以後的後面3條資料

>db.table1.find({"hid":2}).count() --查詢hid=2的總行數


插入集合(關係型資料庫叫行,mongodb叫文件,insert後不需要手工提交,其他會話可以看到)

方法1

db.collectionname.insert({欄位名: "欄位值"})

>db.table1.insert({hid:"1"})

方法2

db.集合名.save({欄位名: "欄位值"})

>db.table1.save({hid:2,hname:"hao2"})

迴圈插入table1集合

for (var i = 0; i < 30; i++) db.table1.save({hid: "u_" + i, age: 22 + i, sex: i % 2});


更新集合( 關係型資料庫叫行,mongodb叫文件 )

>db.table1.update({'hid':2},{$set:{'hid':4}},{multi:true})

把hid欄位的值由2修改為4

update預設修改第一條發現的行,multi:true集合示修改多行


刪除集合( 關係型資料庫叫行,mongodb叫文件 )

>db.table1.remove({'hid2':5}) --刪除hid2為5的行

>db.table1.remove({}) --刪除所有行


建立索引

>db.table1.ensureIndex({"hid":1})

>db.table1.ensureIndex({"hid":1,"hid2":-1},{unique:true});

1表示升級排序,-1表示降序排序,"hid":1,"hid2":-1表示組合索引,unique:true表示唯一性索引

建立索引後,資料庫目錄下會多出一個index-開頭的檔案


檢視集合table1的索引資訊

>db.table1.getIndexes()


刪除集合table1的索引

>db.table1.dropIndexes()


建立使用者

>db.createUser({user:"admin",pwd:"admin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});

>db.createUser({user:"admin1",pwd:"admin1",roles:[{role:"root",db:"admin"}]});


查詢使用者的三種方法

>use admin  

>show users 

>db.system.users.find()

>db.system.users.find().pretty()


查詢當前使用者

db.runCommand({connectionStatus:1})


建立replicate的語句,建立replicate前,兩個節點啟動的時候必須要加上replSet引數,且replSet引數值必須一樣,例如為replicate1

>use admin

>config={_id:'replicate1',members:[{_id:0,host:'172.22.1.157:27017'},{_id:1,host:'172.22.1.158:27017'}]}

>rs.initiate(config)

>rs.status(config)

>rs.status()

>show dbs

再到從庫執行如下

>rs.slaveOk()

>show dbs


檢視replicate複製狀態

> db.printReplicationInfo()


查詢集合table1的shard版本資訊

>db.table1.getShardVersion()


檢視shard分片資訊

>db.printShardingStatus()


啟動

使用mongod命令,後面接各項引數

mongod -f /mongodb/mongodb.conf


關閉

方法1、

use admin

db.shutdownServer()

方法2、(如果啟動用了-f,則關閉的時候也要加-f)

mongod --shutdown

mongod --shutdown -f /mongodb/mongodb.conf

方法3、(不要加-9,否則下次啟動會無法啟動,需要刪除mongod.lock檔案或使用mongod啟動時必須加上--repair才能啟動成功)

kill <mongod process ID>


mongodb切換日誌

執行時間長了,mongodb的日誌會很大,可以執行切換,生成新的日誌,把舊的日誌刪除,執行這個語句,不影響mongodb服務的執行

> use admin

> db.runCommand({logRotate:1})

執行後,會生成新的名稱不變的日誌檔案,之前的日誌會以時間格式命名儲存下來

如果是replicate環境,不會影響replicate,primary執行這個語句只切換自己的日誌,不影響secondary環境的服務,也不會切換secondary環境的日誌;secondary執行這個語句只切換自己的日誌,不影響primary環境的服務,也不會切換primary環境的日誌

mongodb的日誌檔案,重啟後還在,且會把重啟涉及的關閉啟動資訊追加到這個日誌檔案中

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2645995/,如需轉載,請註明出處,否則將追究法律責任。

相關文章