MongoDB DBA常用的NoSQL語句(全)

資料和雲發表於2020-01-13

檢視幫忙命令


>
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({})  --刪除所有行


建立索引

建立索引後,資料庫目錄下會多出一個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


>
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的日誌檔案,重啟後還在,且會把重啟涉及的關閉啟動資訊追加到這個日誌檔案中


出處:http://blog.itpub.net/30126024/viewspace-2645995/


想了解更多關於資料庫、雲技術的內容嗎?

快來關注“資料和雲"、"雲和恩墨,"公眾號及"雲和恩墨"官方網站,我們期待大家一同學習與進步!


小程式”DBASK“線上問答,隨時解惑,歡迎瞭解和關注!


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

相關文章