1. 程式人生 > >MongoDB資料庫常用操作命令

MongoDB資料庫常用操作命令

常用操作

檢視幫助

db.help()

當前資料庫的版本

db.version()

當前使用的資料庫

db.getName()

當前資料庫的狀態

db.stats()

當前資料庫的地址

db.getMongo()

查詢錯誤資訊

db.getPrevError()

清除錯誤記錄

db.resetError()

資料庫伺服器狀態

db.serverStatus()

常規操作

資料庫database操作

建立資料庫

use Person

切換資料庫

use Person

刪除資料庫

db.dropDatabase()

檢視所有資料庫

show
dbs

克隆指定地址的資料庫

db.cloneDatabase(“127.0.0.1”)

複製指定資料庫的資料到指定資料庫

db.copyDatabase(“被複制的資料庫”,”粘貼後資料庫”,”粘貼後地址”)

修復資料庫

db.repairDatabase()

注意:
* 當創作一個集合,即table時,會自動建立當前資料庫
* 刪除資料庫時,必須先切換到對應的資料庫,再執行刪除。

資料庫操作

  • 集合collection操作
    建立collection,即table
db.createCollection(表名,{size:50,capped:5,max:100
})

刪除table

db.col.drop()

得到所有table

db.getCollectionNames()

顯示當前talbe狀態

db.printCollectionStats()

顯示所有collection

show collections

獲取當前集合所在資料庫

db.person.getDB()

複製集合

// col被複制到person
db.col.copyTo('person')

顯示使用者

show users
// 或 
db.getUsers()

新增使用者

db.addUser(“使用者名稱稱”) 
// 或 
db.addUser(“使用者名稱稱”,”使用者密碼”,true為只讀)

刪除使用者

db.removeUser(“使用者名稱”)

資料庫認證,安全模式,即身份驗證

// 登入
db.auth(“使用者名稱稱”,”密碼”)
// 退出
db.logout()

登入資料庫

mongo -u 使用者名稱 -p 密碼 —-authenticationDatabase 資料庫

索引操作

建立索引

// 1為升序,-1為降序
db.col.ensureIndex({“key”:1,”key”:-1}) 

刪除指定索引

db.col.dropIndex(“key”)

刪除所有索引

db.col.dropIndexes()

獲取當前所有索引

db.col.getIndexes()

獲取當前所有index資訊

db.col.reIndex()

檢視索引大小

db.col.totalIndexSize()

資料操作

文件的資料結構和JSON基本一樣,所有儲存在集合中的資料都是BSON格式。BSON是一種類json的一種二進位制形式的儲存格式,簡稱Binary JSON。
操作格式:db.資料庫名稱.操作型別({‘key’:’value’})

插入資料

db.col.insert({key:’value’,key:’value’})
// 或 
db.col.save({key:’value’,key:’value’})
// 或 先將Json定義成變數後再操作
object=({key:’value’,key:’value’}) 
db.col.save(object)

插入資料

檢視資料

db.col.find()

// 或 查詢第一條資料 
db.col.findOne()

// 或 查詢前n條資料 
db.col.find().limit(n)

// 或 查詢n條以後的資料 
db.col.find().skip(n)

// 或 查詢某個結果的記錄條數 
db.col.find(‘key’).count()

// 或 過濾重複資料 
db.col.distinct(‘key’)

// 或 查詢指定資料 
db.col.find({‘key’:’value’})

// 或 查詢大於某個值n的記錄 
db.col.find({‘key’:{$gt:n}})

// 或 查詢小於某個值n的記錄 
db.col.find({‘key’:{$lt:n}})

// 或 查詢大於等於某個值n的記錄 
db.col.find({‘key’:{$gte:n}})

// 或 查詢小於等於某個值n的記錄 
db.col.find({‘key’:{$lte:n}})

// 或 查詢大於等於n1,且小於等於某個值n2的記錄 
db.col.find({‘key’:{$gte:n1,$lte:n2}})

// 或 查詢等於n1,或等於n2的記錄 
db.col.find({$or:[{‘key’:n1},{’key’:n2}]})

// 或 查詢包含某個值value的記錄 
db.col.find({‘key’:/value/})

// 或 查詢以某個值value開頭的記錄 
db.col.find({‘key’:/^value/})

// 或 查詢大於某個值n的記錄 
db.col.find({‘key’:{$gt:n}})

// 或 查詢某個條件下的指定列的記錄 
db.col.find({‘key’:’value’},{‘key’:1,’key’:1,…}})

// 或 查詢按指定條件排序的記錄。注意:1為升序,-1為降序
db.col.find().sort({‘key’:1})

注意:
1 查詢條件等式小於ltlte,大於gtgte,不等於ne2in,不是notor
3 匹配自身,或不存在的null,存在的$exists

刪除資料

db.col.remove({‘key’:’value’})

修改資料

db.col.update({‘key’:’value’},{$set:{‘key’:’value’}},false,true)
// 或 某個條件下的值增加n 
db.col.update({‘key’:’value’},{$inc:{‘key’:n}})

增刪改查

多種操作合併,如查詢修改刪除

db.col.findAndModify({query:{‘key’:’value’},sort:{‘key’:1},update:{$set:{‘key’:’value’}},remove:false})

// 或 
db.runCommand({findandmodify:col,query:{‘key’:’value’},sort:{‘key’:-1},update:{$set:{‘key’:’value’}},remove:false})

多條件操作

其他操作

物件轉換成json

tojson(new Object({‘key’:’value’}))

遊標查詢

轉換成陣列

var array = db.col.find()

顯示記錄

while (array.hasNext()){printjson(array.next());}

迭代迴圈

db.col.find().forEach(printjson)

陣列處理

轉換成陣列

var array = db.col.find()

下標顯示記錄

array[1]

// 或 
var array = db.col.find().toArray()
printjson(array[1])

資料庫的鎖狀態

鎖狀態

db.currentOp()

加鎖

db.runCommand({fsync:1,lock:1})

解鎖

db.$cmd.sys.unlock.findOne()

注意
1 一般執行資料庫備份時進行加鎖
2 fsyncLock為1,表示不允許執行寫操作

資料庫的備份、恢復、資料遷移(匯入、匯出)
建立備份目錄

mkdir backupDocument

進入bin目錄

cd bin

備份
備份全部資料庫

./mongodump

備份指定資料庫

./mongodump -d 指定資料庫

備份指定資料庫中的指定集合

./mongodump -d 指定資料庫 -c 指定集合

注意:備份時,需要進入備份資料庫的目錄

恢復
恢復全部資料庫

// drop表示恢復前刪除原來的資料庫資料,避免造成恢復後資料重複
./mongorestore —-drop

恢復指定資料庫

./mongorestore -d 指定資料庫 —drop

恢復指定資料庫的指定集合

./mongorestore -d 指定資料庫 -c 指定集合 —drop

匯入

// 將資料匯入到指定資料庫的指定集合
./mongoimport -d col -c col --file /Users/zhangshaoyu/Desktop/export/personInfo.json --type json

注意:
1 檔案型別type:csv、tsv、json,預設格式json
2 mongoimport —help檢視幫助

匯入資料

匯出

// 將指定資料庫中的指定集合中的資料匯出到指定格式檔案
./mongoexport -d col -c col -o /Users/zhangshaoyu/Desktop/export/personInfo.json --type json -f 'name,age,id'

注意:
1 -q表示指定查詢條件
2 -f表示檔案中的列名
3 mongoexport —help可檢視幫助

匯出資料

遠端管理

遠端連線

mongo -u 使用者名稱 -p 密碼 地址/資料庫

多表聯合處理

示例:模擬使用者發帖,關聯使用者集合userTable、帖子集合postTable的關係。
1 獲取使用者資訊

people = db.person.findOne()

2 發表幀子

db.postCollection.save({'title':'test title 2','name':people.name})

3 獲取帖子資訊

db.postCollection.find({'name':people.name})

多表查詢