1. 程式人生 > 實用技巧 >MongoDB DBA常用的NoSQL語句 參考學習

MongoDB DBA常用的NoSQL語句 參考學習

MongoDB DBA常用的NoSQL語句

檢視幫忙命令


>
hlep--server級別

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

檢視所有資料庫

>showdbs

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

檢視當前資料庫

>db

建立資料庫

>
useDATABASE_NAME


切換到某個資料

>
useDATABASE_NAME


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

>
db
.dropDatabase()


修復資料庫

>
db
.repairDatabase()


拷貝資料庫test為test999


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


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


>
showcollections

> showtables

檢視各集合的狀態

>
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=2andhid2=3

>db.table1. find({$ or:[{ "hid": 2},{ "hid2": 3}]}) --hid=2orhid2=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/}) --hidlike'%2%'

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

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

>db.table1. find({ "hid": 23},{ "hid": 1, "go2": 1}) --selecthid,go2fromtable1wherehid=23

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

>db.table1. find({ "hid": 23},{ "hid": true, "go2": true}) --selecthid,go2fromtable1wherehid=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( vari= 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({}) --刪除所有行

建立索引

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

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


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

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

檢視集合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


>
useadmin


> 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()

> showdbs

再到從庫執行如下

> rs.slaveOk()

> showdbs

檢視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<mongodprocess
ID>


mongodb切換日誌

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

>
use
admin


> db .runCommand({ logRotate: 1})


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

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

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

--原文地址:http://blog.itpub.net/30126024/viewspace-2645995/