mongodb4.4常用命令《三》
1.db.adminCommand()
例子:
(1).killOp
以下示例使用db.adminCommand()方法執(zhí)行killOp命令以終止opid 724的操作。 killOp是 Management 命令,必須在admin數(shù)據(jù)庫上運(yùn)行。
db.adminCommand( { "killOp": 1, "op": 724 } )
(2).renameCollection
以下示例使用db.adminCommand()執(zhí)行renameCollectionManagement 數(shù)據(jù)庫命令將test數(shù)據(jù)庫中的orders集合重命名為orders-2016。
db.adminCommand(
{
renameCollection: "test.orders",
to: "test.orders-2016"
}
)
(3).createUser
下面的示例使用db.adminCommand()方法在admin數(shù)據(jù)庫上創(chuàng)建一個(gè)具有dbOwner角色的名為bruce的用戶。
db.adminCommand(
{
createUser: "bruce",
pwd: passwordPrompt(), // or
roles: [
{ role: "dbOwner", db: "admin" }
]
}
)
注意:從mongo Shell的4.2版本開始,您可以將passwordPrompt()方法與各種用戶身份驗(yàn)證/管理方法/命令結(jié)合使用以提示輸入密碼,而不是直接在方法/命令調(diào)用中指定密碼。 但是,您仍然可以像使用早期版本的mongo shell一樣直接指定密碼。
2.db.cloneDatabase()(從4.0版開始不推薦使用)
從4.2版開始,MongoDB刪除了clone命令。 包裝了clone命令的已棄用的db.cloneDatabase()僅可針對(duì)MongoDB 4.0或更早版本運(yùn)行。 有關(guān)行為和示例,請(qǐng)參考手冊(cè)的4.0或更早版本。
有關(guān)4.2+版中的替代方法,參見 Copy/Clone a Database.
db.cloneDatabase()方法不會(huì)快照數(shù)據(jù)庫。如果在克隆操作期間的任何時(shí)候有任何 Client 端更新您要復(fù)制的數(shù)據(jù)庫,則結(jié)果數(shù)據(jù)庫可能會(huì)不一致。
clone操作期間,目標(biāo)數(shù)據(jù)庫將定期鎖定。換句話說,db.cloneDatabase()偶爾會(huì)屈服以允許完成數(shù)據(jù)庫上的其他操作。
3.db.copyDatabase()
從4.2版開始,MongoDB刪除了clone命令。 包裝了clone命令的已棄用的db.cloneDatabase()僅可針對(duì)MongoDB 4.0或更早版本運(yùn)行。 有關(guān)行為和示例,請(qǐng)參考手冊(cè)的4.0或更早版本。
有關(guān)4.2+版中的替代方法,參見 Copy/Clone a Database.
db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)
例子1,拷貝本地?cái)?shù)據(jù)庫,將本地的數(shù)據(jù)庫test拷貝為test1
db.copyDatabase("test","test1")
例子2,復(fù)制遠(yuǎn)程數(shù)據(jù)庫(只能復(fù)制復(fù)制集上的數(shù)據(jù)庫)
語法: db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)
將遠(yuǎn)程機(jī)器10.2.3.114的數(shù)據(jù)庫test復(fù)制到本機(jī)并改名為test1
db.copyDatabase("test","test1","10.2.3.114:27017","user","123456")
4.db.commandHelp(command)
顯示指定的database command的幫助文本:
db.commandHelp(help)
db.commandHelp(db.help)
db.commandHelp(rs.help)
db.commandHelp(db.mycoll.help)
5.db.createCollection()
由于在命令中首次引用集合時(shí),MongoDB 會(huì)隱式創(chuàng)建一個(gè)集合,因此此方法主要用于創(chuàng)建使用特定選項(xiàng)的新集合。例如,您使用db.createCollection()創(chuàng)建capped collection或創(chuàng)建使用document validation的新集合。
資源鎖定:
在4.2版本做出,db.createCollection()在操作期間獲得對(duì)指定集合或視圖的排他鎖。 集合上的所有后續(xù)操作必須等待db.createCollection()釋放鎖。 db.createCollection()通常會(huì)短暫持有此鎖。創(chuàng)建視圖需要在數(shù)據(jù)庫中的system.views集合上獲得一個(gè)附加的排他鎖。 該鎖將阻止在數(shù)據(jù)庫中創(chuàng)建或修改視圖,直到命令完成。
在MongoDB 4.2之前,db.createCollection()在父數(shù)據(jù)庫上獲得了排他鎖,從而阻止了對(duì)數(shù)據(jù)庫及其所有集合的所有操作,直到操作完成。
例子:
創(chuàng)建Capped Collection
Capped Collection的集合具有最大的大小或文檔數(shù),可防止其增長(zhǎng)到超過最大閾值。 所有設(shè)置上限的集合必須指定最大大小,并且還可以指定最大文檔數(shù)。 如果集合在達(dá)到最大文檔數(shù)之前達(dá)到最大大小限制,則MongoDB會(huì)刪除較舊的文檔。 考慮以下示例:
db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )
此命令將創(chuàng)建一個(gè)名為log的集合,最大大小為5 MB,最多5000個(gè)文檔。
使用文檔驗(yàn)證創(chuàng)建集合。
3.2 版中的新功能。具有驗(yàn)證的集合將每個(gè)插入或更新的文檔與validator選項(xiàng)中指定的條件進(jìn)行比較。根據(jù)validationLevel和validationAction,MongoDB 要么返回警告,要么在文檔不符合指定條件時(shí)拒絕插入或更新文檔。
以下示例使用 JSON 模式驗(yàn)證器創(chuàng)建contacts集合(MongoDB 3.6 添加了$jsonSchema運(yùn)算符以支持 JSON 模式驗(yàn)證。):
db.createCollection( "contacts", {
validator: { $jsonSchema: {
bsonType: "object",
required: [ "phone" ],
properties: {
phone: {
bsonType: "string",
description: "must be a string and is required"
},
email: {
bsonType : "string",
pattern : "@mongodb\.com$",
description: "must be a string and match the regular expression pattern"
},
status: {
enum: [ "Unknown", "Incomplete" ],
description: "can only be one of the enum values"
}
}
} }
} )
使用驗(yàn)證器后,以下插入操作將使驗(yàn)證失?。?/p>
db.contacts.insert( { name: "Amanda", status: "Updated" } )
該方法在WriteResult中返回錯(cuò)誤:
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
指定排序規(guī)則
db.myColl.find().sort( { category: 1 } )
6.db.createView()
將指定的聚合管道應(yīng)用于源集合或視圖的結(jié)果,創(chuàng)建一個(gè)視圖。 視圖充當(dāng)只讀集合,并在讀取操作期間按需計(jì)算。 您必須在與源集合相同的數(shù)據(jù)庫中創(chuàng)建視圖。 MongoDB對(duì)視圖執(zhí)行讀取操作,這是基礎(chǔ)聚合管道的一部分。
視圖表現(xiàn)出以下行為:
(1).Read Only
視圖是只讀的; 對(duì)視圖的寫操作將出錯(cuò)。以下讀取操作可以支持視圖:
db.collection.find()
db.collection.findOne()
db.collection.aggregate()
db.collection.countDocuments()
db.collection.estimatedDocumentCount()
db.collection.count()
db.collection.distinct()
(2).Index Use and Sort Operations(索引使用和排序操作)
視圖使用基礎(chǔ)集合的索引。
由于索引位于基礎(chǔ)集合上,因此您無法直接在視圖上創(chuàng)建,刪除或重建索引,也無法在視圖上獲取索引列表。
從MongoDB 4.4開始,可以在視圖上運(yùn)行find命令時(shí)指定$natural排序。 MongoDB的早期版本不支持對(duì)視圖進(jìn)行自然排序。
該視圖的基礎(chǔ)聚合管道必須遵守100 MB的內(nèi)存限制,才能阻止排序和阻止組操作。 從MongoDB 4.4開始,您可以在視圖上發(fā)出帶有allowDiskUse:true的find命令,以允許MongoDB使用臨時(shí)文件來阻止排序和組操作。
在MongoDB 4.4之前,僅聚合命令接受allowDiskUse選項(xiàng)。
(3).Projection Restrictions(投影限制)
視圖上的find()操作不支持以下projection運(yùn)算符:
$
$elemMatch
$slice
$meta
(4).Immutable Name
您不能重命名views。
具體例子參考:https://docs.mongodb.com/manual/reference/method/db.createView/
7.db.currentOp()
返回一個(gè)文檔,其中包含有關(guān)數(shù)據(jù)庫實(shí)例正在進(jìn)行的操作的信息。 db.currentOp()方法包裝數(shù)據(jù)庫命令currentOp。
注意:
由于currentOp命令和db.currentOp()幫助程序在單個(gè)文檔中返回結(jié)果,因此currentOp結(jié)果集的總大小受文檔最大16MB BSON大小限制。
從版本3.6開始,MongoDB提供$currentOp聚合階段。 $currentOp階段在一個(gè)文檔流上返回一個(gè)游標(biāo),每個(gè)文檔都報(bào)告一個(gè)操作。 每個(gè)操作文檔都受16MB BSON限制,但是與currentOp命令不同,結(jié)果集的總大小沒有限制。
因此,$currentOp聚合階段比currentOp命令及其mongo shell幫助器db.currentOp()更可取。
db.currentOp()可以接受過濾器文檔或布爾參數(shù)。如果將篩選器文檔傳遞給db.currentOp(),則輸出僅返回與篩選器匹配的當(dāng)前操作的信息。 篩選器文檔可以包含:
db.currentOp(true) #指定true以包括對(duì)空閑連接的操作和系統(tǒng)操作
db.currentOp( { "$all": true } ) #則返回有關(guān)所有操作的信息,包括有關(guān)空閑連接的操作和系統(tǒng)操作。與db.currentOp(true)是等效的
db.currentOp( { "$ownOps": true } ) #僅返回有關(guān)當(dāng)前用戶操作的信息。
db.currentOp和database profiler報(bào)告所有 CRUD 操作的相同基本診斷信息,包括以下內(nèi)容:
例子:
(1).Write Operations Waiting for a Lock(寫操作等待鎖定)
db.currentOp(
{
"waitingForLock" : true,
$or: [
{ "op" : { "$in" : [ "insert", "update", "remove" ] } },
{ "command.findandmodify": { $exists: true } }
]
}
)
(2).Active Operations with no Yields
以下示例返回有關(guān)從未生成的所有活動(dòng)運(yùn)行操作的信息:
db.currentOp(
{
"active" : true,
"numYields" : 0,
"waitingForLock" : false
}
)
以下示例返回有關(guān)運(yùn)行時(shí)間超過3秒的數(shù)據(jù)庫db1所有活動(dòng)操作的信息:
db.currentOp(
{
"active" : true,
"secs_running" : { "$gt" : 3 },
"ns" : /^db1\./
}
)
(3).Active Indexing Operations
db.adminCommand(
{
currentOp: true,
$or: [
{ op: "command", "command.createIndexes": { $exists: true } },
{ op: "none", "msg" : /^Index Build/ }
]
}
)
8.db.fsyncLock()
強(qiáng)制mongod將所有未完成的寫操作刷新到磁盤并鎖定整個(gè)mongod實(shí)例,以防止其他寫操作,直到用戶使用相應(yīng)的db.fsyncUnlock()命令釋放該鎖為止。
db.fsyncLock()和db.fsyncUnlock()操作維護(hù)鎖定計(jì)數(shù)。 db.fsyncLock()遞增鎖計(jì)數(shù),而db.fsyncUnlock()遞減鎖計(jì)數(shù)。
要解鎖mongod實(shí)例進(jìn)行寫入,鎖定計(jì)數(shù)必須為零。 也就是說,對(duì)于給定數(shù)量的db.fsyncLock()操作,必須發(fā)出相應(yīng)數(shù)量的db.fsyncUnlock()操作以解鎖實(shí)例進(jìn)行寫操作。
9.db.fsyncUnlock()
將db.fsyncLock()在mongod實(shí)例上獲得的鎖定減少1。
要解鎖mongod實(shí)例進(jìn)行寫入,鎖定計(jì)數(shù)必須為零。 也就是說,對(duì)于給定數(shù)量的db.fsyncLock()操作,必須發(fā)出相應(yīng)數(shù)量的db.fsyncUnlock()操作以解鎖實(shí)例進(jìn)行寫操作。
10.db.getCollection(name)
返回在功能上等效于使用db.
db.getCollection()對(duì)象可以訪問任何collection methods。
使用db.getCollection()好處在于當(dāng)集合名字為auth時(shí),此時(shí)因?yàn)樗c數(shù)據(jù)庫方法db.auth()發(fā)生名稱沖突,直接調(diào)用db.auth來執(zhí)行插入操作將引用db.auth()方法,并且會(huì)出錯(cuò)。
11.db.getCollectionInfos()
返回包含當(dāng)前數(shù)據(jù)庫的集合或視圖信息(例如名稱和選項(xiàng))的文檔數(shù)組。
例子1.返回包含集合信息的所有文檔數(shù)組
use wang
db.getCollectionInfos()

例子2.返回特定集合的集合信息
use wang
db.getCollectionInfos({name:"blog"})

12.db.getCollectionNames()
返回一個(gè)數(shù)組,其中包含當(dāng)前數(shù)據(jù)庫中所有集合的名稱和views(在版本4.0中更改:db.getCollectionNames()不再鎖定集合以返回名稱信息。
wang> db.getCollectionNames()
[
"analytics",
"blog",
"blog.posts",
"c",
"coll",
"foo",
"food",
"lists",
"movies",
"nn2",
"papers",
"people",
"players",
"processes",
"stock.ticker",
"system.profile",
"test2",
"users",
"users2",
"users3",
"whiteBoardConfig"
]
wang>
從mongo shell的4.0版開始,db.getCollectionNames()等效于:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
13.db.getLastError() (已經(jīng)不推薦使用了)
指定寫關(guān)注級(jí)別,以確認(rèn)通過同一連接發(fā)出的先前寫操作是否成功,并返回該操作的錯(cuò)誤字符串。
在2.6版中進(jìn)行了更改:用于寫操作的新協(xié)議將寫關(guān)注點(diǎn)與寫操作集成在一起,從而無需單獨(dú)的db.getLastError()。 現(xiàn)在,大多數(shù)寫方法都返回寫操作的狀態(tài),包括錯(cuò)誤信息。 在以前的版本中,客戶端通常將db.getLastError()與寫入操作結(jié)合使用以驗(yàn)證寫入是否成功。
14.db.getLastErrorObj()(已經(jīng)不推薦使用了)
指定write concern級(jí)別,以確認(rèn)通過同一連接發(fā)出的先前寫操作是否成功,并返回該操作的document。 在 2.6 版中進(jìn)行了更改:write operations的新協(xié)議將寫入問題與寫入操作集成在一起,從而無需單獨(dú)的db.getLastErrorObj()。 大多數(shù)寫方法現(xiàn)在返回寫操作的狀態(tài),包括錯(cuò)誤信息。在以前的版本中,Client 端通常結(jié)合使用db.getLastErrorObj()和寫入操作來驗(yàn)證寫入是否成功。
15.db.getLogComponents()
返回當(dāng)前的詳細(xì)度設(shè)置。 詳細(xì)設(shè)置確定MongoDB為每個(gè)日志消息組件生成的日志消息的數(shù)量。
如果某個(gè)組件繼承了其父級(jí)的詳細(xì)級(jí)別,則db.getLogComponents()會(huì)為該組件的詳細(xì)級(jí)別顯示-1。

16.db.getMongo()
返回:當(dāng)前數(shù)據(jù)庫連接。
shell啟動(dòng)時(shí),db.getMongo()運(yùn)行。 使用此命令測(cè)試mongo shell是否與正確的數(shù)據(jù)庫實(shí)例建立連接。
17.db.getName()
返回:當(dāng)前數(shù)據(jù)庫名稱。
18.db.getProfilingLevel()(已經(jīng)過時(shí))
該方法提供了圍繞數(shù)據(jù)庫命令“ profile”的包裝器,并返回當(dāng)前的分析級(jí)別。
從1.8.4版開始不推薦使用:將db.getProfilingStatus()用于相關(guān)功能。
wang> db.getProfilingLevel()
1
wang>
19.db.getProfilingStatus()
返回:當(dāng)前profile level配置文件級(jí)別,slowOpThresholdMs設(shè)置和slowOpSampleRate設(shè)置
wang> db.getProfilingStatus()
{ "was" : 1, "slowms" : 200, "sampleRate" : 1 }
20.db.getSiblingDB()
您可以使用db.getSiblingDB()作為使用
db1 = db.getSiblingDB('wang')
db1.test2.count()
21.db.hostInfo()
返回一個(gè)文檔,其中包含有關(guān)mongod或mongos運(yùn)行所在的基礎(chǔ)系統(tǒng)的信息。 一些返回的字段僅包含在某些平臺(tái)上。
db.hostInfo()在mongo shell中的hostInfo周圍提供了一個(gè)幫助器。Linux系統(tǒng)上db.hostInfo()的輸出將類似于以下內(nèi)容:
{
"system" : {
"currentTime" : ISODate(""),
"hostname" : "",
"cpuAddrSize" : ,
"memSizeMB" : ,
"memLimitMB" : , // Available starting in MongoDB 4.0.9 (and 3.6.13)
"numCores" : ,
"cpuArch" : "",
"numaEnabled" :
},
"os" : {
"type" : "",
"name" : "",
"version" : ""
},
"extra" : {
"versionString" : "",
"libcVersion" : "",
"kernelVersion" : "",
"cpuFrequencyMHz" : "",
"cpuFeatures" : "",
"pageSize" : ,
"numPages" : ,
"maxOpenFiles" :
},
"ok" :
}
22.db.isMaster()
返回描述mongod實(shí)例角色的文檔。如果mongod是副本集的成員,則ismaster和secondary字段將報(bào)告實(shí)例是副本集的主要成員還是次要成員。
wang> db.isMaster()
{
"ismaster" : true,
"topologyVersion" : {
"processId" : ObjectId("5f634f89ddce65be60f5dcef"),
"counter" : NumberLong(0)
},
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"maxWriteBatchSize" : 100000,
"localTime" : ISODate("2020-10-26T03:01:12.298Z"),
"logicalSessionTimeoutMinutes" : 30,
"connectionId" : 752,
"minWireVersion" : 0,
"maxWireVersion" : 9,
"readOnly" : false,
"ok" : 1
}
wang>
23.db.killOp()
終止操作ID指定的操作。 要查找操作及其相應(yīng)的ID,請(qǐng)參見db.currentOp()
注意:極其謹(jǐn)慎地終止正在運(yùn)行的操作。 僅使用db.killOp()終止由客戶端啟動(dòng)的操作,而不終止內(nèi)部數(shù)據(jù)庫操作。
從MongoDB 4.0開始db.killOp()方法可以在mongos上運(yùn)行,并且可以殺死在集群中多個(gè)分片上運(yùn)行的查詢(讀取操作)。
MongoDB killOp 案例詳解:https://mongoing.com/archives/26414
24.db.listCommands()
提供所有數(shù)據(jù)庫命令的列表。 有關(guān)這些選項(xiàng)的更廣泛的索引,請(qǐng)參見數(shù)據(jù)庫命令文檔。
25.db.logout()
結(jié)束當(dāng)前身份驗(yàn)證會(huì)話。 如果當(dāng)前會(huì)話未通過身份驗(yàn)證,則此功能無效。
26.db.printCollectionStats()
提供圍繞db.collection.stats()方法的包裝。 返回每個(gè)集合的統(tǒng)計(jì)信息,每個(gè)集合用三個(gè)連字符隔開。
注意:mongo shell中的db.printCollectionStats()不返回JSON。 使用db.printCollectionStats()進(jìn)行手動(dòng)檢查,并在腳本中使用db.collection.stats()。

27. db.resetError()(已經(jīng)過時(shí))
1.6版開始不推薦使用。重置db.getPrevError或getPrevError返回的錯(cuò)誤消息。提供圍繞resetError命令的包裝器。
28.db.runCommand() (非常有用的命令太好用了)
參考鏈接:https://docs.mongodb.com/manual/reference/command/
提供幫助程序來運(yùn)行指定的database commands。這是發(fā)出數(shù)據(jù)庫命令的首選方法,因?yàn)樗?Shell 程序和驅(qū)動(dòng)程序之間提供了一致的接口。
例子1,統(tǒng)計(jì)表中的記錄數(shù)
wang> db.runCommand({count:"test2"})
{ "n" : 100, "ok" : 1 }
帶條件的統(tǒng)計(jì)(查詢x字段的值<=20的數(shù)量)
wang> db.runCommand({count:"test2",query:{x:{$lte:20}}})
{ "n" : 21, "ok" : 1 }
參考鏈接:https://docs.mongodb.com/manual/reference/command/count/#dbcmd.count
例子2,使用distinct
wang> db.users3.find()
{ "_id" : ObjectId("5f64095aa33ac555dcb13c6d"), "birthday" : "10/13/1978", "gift" : "Happy Birthday!" }
{ "_id" : ObjectId("5f64095aa33ac555dcb13c6e"), "birthday" : "10/13/1978", "gift" : "Happy Birthday!" }
{ "_id" : ObjectId("5f64095aa33ac555dcb13c6f"), "birthday" : "10/13/1978", "gift" : "Happy Birthday!" }
wang>
wang> db.runCommand ( { distinct: "users3", key: "birthday" } )
{ "values" : [ "10/13/1978" ], "ok" : 1 }
wang>
29.db.serverBuildInfo()
提供圍繞buildInfo數(shù)據(jù)庫命令的包裝。 buildInfo返回一個(gè)文檔,其中包含用于編譯此mongod實(shí)例的參數(shù)概述。
wang> db.serverBuildInfo()
{
"version" : "4.4.0",
"gitVersion" : "563487e100c4215e2dce98d0af2a6a5a2d67c5cf",
"modules" : [ ],
"allocator" : "tcmalloc",
"javascriptEngine" : "mozjs",
"sysInfo" : "deprecated",
"versionArray" : [
4,
4,
0,
0
],
"openssl" : {
"running" : "OpenSSL 1.0.1e-fips 11 Feb 2013",
"compiled" : "OpenSSL 1.0.1e-fips 11 Feb 2013"
},
"buildEnvironment" : {
"distmod" : "rhel70",
"distarch" : "x86_64",
"cc" : "/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.2.0",
"ccflags" : "-fno-omit-frame-pointer -fno-strict-aliasing -fasynchronous-unwind-tables -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp",
"cxx" : "/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.2.0",
"cxxflags" : "-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17",
"linkflags" : "-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--no-threads -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro -Wl,-z,origin -Wl,--enable-new-dtags",
"target_arch" : "x86_64",
"target_os" : "linux",
"cppdefines" : "SAFEINT_USE_INTRINSICS 0 PCRE_STATIC NDEBUG _XOPEN_SOURCE 700 _GNU_SOURCE _FORTIFY_SOURCE 2 BOOST_THREAD_VERSION 5 BOOST_THREAD_USES_DATETIME BOOST_SYSTEM_NO_DEPRECATED BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS BOOST_ENABLE_ASSERT_DEBUG_HANDLER BOOST_LOG_NO_SHORTHAND_NAMES BOOST_LOG_USE_NATIVE_SYSLOG BOOST_LOG_WITHOUT_THREAD_ATTR ABSL_FORCE_ALIGNED_ACCESS"
},
"bits" : 64,
"debug" : false,
"maxBsonObjectSize" : 16777216,
"storageEngines" : [
"biggie",
"devnull",
"ephemeralForTest",
"wiredTiger"
],
"ok" : 1
}
wang>
30. db.serverCmdLineOpts()
返回一個(gè)文檔,該文檔報(bào)告用于啟動(dòng)mongod或mongos實(shí)例的參數(shù)和配置選項(xiàng)。有關(guān)可用的MongoDB運(yùn)行時(shí)選項(xiàng)的其他信息,請(qǐng)參閱配置文件選項(xiàng),mongod和mongos
wang> db.serverCmdLineOpts()
{
"argv" : [
"/usr/local/mongodb/bin/mongod",
"-f",
"/usr/local/mongodb/bin/mongodb.conf"
],
"parsed" : {
"config" : "/usr/local/mongodb/bin/mongodb.conf",
"net" : {
"bindIp" : "*",
"maxIncomingConnections" : 5000,
"port" : 27017
},
"operationProfiling" : {
"mode" : "slowOp",
"slowOpThresholdMs" : 200
},
"processManagement" : {
"fork" : true,
"pidFilePath" : "/usr/local/mongodb/data/mongodb.pid"
},
"security" : {
"authorization" : "enabled"
},
"storage" : {
"dbPath" : "/usr/local/mongodb/data/db",
"directoryPerDB" : true,
"engine" : "wiredTiger",
"journal" : {
"enabled" : true
},
"syncPeriodSecs" : 60,
"wiredTiger" : {
"collectionConfig" : {
"blockCompressor" : "snappy"
},
"engineConfig" : {
"cacheSizeGB" : 2,
"directoryForIndexes" : true,
"journalCompressor" : "snappy",
"statisticsLogDelaySecs" : 0
},
"indexConfig" : {
"prefixCompression" : true
}
}
},
"systemLog" : {
"destination" : "file",
"logAppend" : true,
"logRotate" : "rename",
"path" : "/usr/local/mongodb/data/logs/mongod.log",
"timeStampFormat" : "iso8601-local",
"traceAllExceptions" : false,
"verbosity" : 0
}
},
"ok" : 1
}
wang>
31.db.serverStatus()
返回一個(gè)文檔,概述數(shù)據(jù)庫過程的狀態(tài)。該命令為數(shù)據(jù)庫命令serverStatus提供了包裝。
例子1.返回所有的狀態(tài)信息
db.serverStatus()
例子2.返回鎖信息 R:表示全局讀鎖 W:全局寫鎖 r:某個(gè)數(shù)據(jù)庫讀鎖 w:某個(gè)數(shù)據(jù)庫寫鎖
db.serverStatus().locks
例子3.連接數(shù)信息
db.serverStatus().connections
32. db.setLogLevel()
為log messages設(shè)置單個(gè)詳細(xì)級(jí)別。詳細(xì)級(jí)別的范圍是0到5,0是 MongoDB 的默認(rèn)日志詳細(xì)級(jí)別,其中包含Informational條消息。1~5 是調(diào)試級(jí)別,會(huì)記錄客戶端所有的完整請(qǐng)求。
注意:從版本4.2開始,MongoDB在日志消息中包括調(diào)試詳細(xì)級(jí)別(1-5)。 例如,如果詳細(xì)級(jí)別為2,則MongoDB記錄D2。 在以前的版本中,MongoDB日志消息僅將D指定為Debug級(jí)別。
例子1:該操作將默認(rèn)詳細(xì)程度設(shè)置為1
db.setLogLevel(1)

查詢?nèi)罩驹敿?xì)等級(jí)的命令
wang> db.getLogComponents()
{
"verbosity" : 1,
"accessControl" : {
"verbosity" : -1
},
"command" : {
"verbosity" : -1
},
"control" : {
"verbosity" : -1
},
"executor" : {
"verbosity" : -1
},
"geo" : {
"verbosity" : -1
},
"index" : {
"verbosity" : -1
},
"network" : {
"verbosity" : -1,
"asio" : {
"verbosity" : -1
},
"bridge" : {
"verbosity" : -1
},
"connectionPool" : {
"verbosity" : -1
}
},
"query" : {
"verbosity" : -1
},
"replication" : {
"verbosity" : -1,
"election" : {
"verbosity" : -1
},
"heartbeats" : {
"verbosity" : -1
},
"initialSync" : {
"verbosity" : -1
},
"rollback" : {
"verbosity" : -1
}
},
"sharding" : {
"verbosity" : -1,
"shardingCatalogRefresh" : {
"verbosity" : -1
},
"migration" : {
"verbosity" : -1
}
},
"storage" : {
"verbosity" : -1,
"recovery" : {
"verbosity" : -1
},
"journal" : {
"verbosity" : -1
}
},
"write" : {
"verbosity" : -1
},
"ftdc" : {
"verbosity" : -1
},
"tracking" : {
"verbosity" : -1
},
"transaction" : {
"verbosity" : -1
},
"test" : {
"verbosity" : -1
}
}
wang>
例子2,以下操作將systemLog.component.storage.journal.verbosity更新為2:
db.setLogLevel(2, "storage.journal" )
33.db.setProfilingLevel()
設(shè)置Profiling捕捉慢查詢,類似于MySQL的slow log, mongodb可以監(jiān)控所有慢的以及不慢的查詢。這個(gè)工具就是Profiling,該工具在運(yùn)行的實(shí)例上收集有關(guān)MongoDB的 寫操作,游標(biāo),數(shù)據(jù)庫命令等,可以在數(shù)據(jù)庫級(jí)別開啟該工具,也可以在實(shí)例級(jí)別開啟。該工具會(huì)把收集到的所有都寫入到system.profile集合中,該集合是一個(gè)capped collection。
0:關(guān)閉,不收集任何數(shù)據(jù)。
1:收集慢查詢數(shù)據(jù),默認(rèn)是100毫秒
2:收集所有數(shù)據(jù)
例子1,設(shè)置日志級(jí)別為1,慢查詢閾值為20毫秒,采樣率為0.42
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })
查看Profiling的級(jí)別
db.getProfilingStatus()
例子2,禁用Profiler并設(shè)置慢速操作閾值和采樣率
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })
34.db.shutdownServer()
干凈安全地關(guān)閉當(dāng)前mongod或mongos進(jìn)程。 您必須對(duì)admin數(shù)據(jù)庫發(fā)出db.shutdownServer()操作
例子1,Shut down a mongod
db.getSiblingDB("admin").shutdownServer()
例子2,F(xiàn)orce Shut Down a mongod
db.getSiblingDB("admin").shutdownServer({ "force" : true })
例子3,Shut Down a Primary mongod With Longer Timeout
db.getSiblingDB("admin").shutdownServer({ "timeoutSecs": 60 })
35.db.stats()
返回反映單個(gè)數(shù)據(jù)庫使用狀態(tài)的統(tǒng)計(jì)信息。
下面的示例將返回的值轉(zhuǎn)換為千字節(jié):
wang> db.stats(1024)
{
"db" : "wang",
"collections" : 21,
"views" : 0,
"objects" : 211,
"avgObjSize" : 1789.744075829384,
"dataSize" : 368.78515625,
"storageSize" : 660,
"indexes" : 20,
"indexSize" : 452,
"totalSize" : 1112,
"scaleFactor" : 1024,
"fsUsedSize" : 25937044,
"fsTotalSize" : 308016184,
"ok" : 1
}
36.db.watch()
僅適用于副本集和分片群集
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽碓醇白髡呙帧?/p>
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com






