1.db.adminCommand()
例子:
(1).killOp
以下示例使用db.adminCommand()方法执行killOp命令以终止opid 724的操作。 killOp是 Management 命令,必须在admin数据库上运行。
db.adminCommand( { "killOp": 1, "op": 724 } )
(2).renameCollection
以下示例使用db.adminCommand()执行renameCollectionManagement 数据库命令将test数据库中的orders集合重命名为orders-2016。
db.adminCommand(
{
renameCollection: "test.orders",
to: "test.orders-2016"
}
)
(3).createUser
下面的示例使用db.adminCommand()方法在admin数据库上创建一个具有dbOwner角色的名为bruce的用户。
db.adminCommand(
{
createUser: "bruce",
pwd: passwordPrompt(), // or <cleartext password>
roles: [
{ role: "dbOwner", db: "admin" }
]
}
)
注意:从mongo Shell的4.2版本开始,您可以将passwordPrompt()方法与各种用户身份验证/管理方法/命令结合使用以提示输入密码,而不是直接在方法/命令调用中指定密码。 但是,您仍然可以像使用早期版本的mongo shell一样直接指定密码。
2.db.cloneDatabase()(从4.0版开始不推荐使用)
从4.2版开始,MongoDB删除了clone命令。 包装了clone命令的已弃用的db.cloneDatabase()仅可针对MongoDB 4.0或更早版本运行。 有关行为和示例,请参考手册的4.0或更早版本。
有关4.2+版中的替代方法,参见 Copy/Clone a Database.
db.cloneDatabase()方法不会快照数据库。如果在克隆操作期间的任何时候有任何 Client 端更新您要复制的数据库,则结果数据库可能会不一致。
clone操作期间,目标数据库将定期锁定。换句话说,db.cloneDatabase()偶尔会屈服以允许完成数据库上的其他操作。
3.db.copyDatabase()
从4.2版开始,MongoDB删除了clone命令。 包装了clone命令的已弃用的db.cloneDatabase()仅可针对MongoDB 4.0或更早版本运行。 有关行为和示例,请参考手册的4.0或更早版本。
有关4.2+版中的替代方法,参见 Copy/Clone a Database.
db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)
例子1,拷贝本地数据库,将本地的数据库test拷贝为test1
db.copyDatabase("test","test1")
例子2,复制远程数据库(只能复制复制集上的数据库)
语法: db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)
将远程机器10.2.3.114的数据库test复制到本机并改名为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()
由于在命令中首次引用集合时,MongoDB 会隐式创建一个集合,因此此方法主要用于创建使用特定选项的新集合。例如,您使用db.createCollection()创建capped collection或创建使用document validation的新集合。
资源锁定:
在4.2版本做出,db.createCollection()在操作期间获得对指定集合或视图的排他锁。 集合上的所有后续操作必须等待db.createCollection()释放锁。 db.createCollection()通常会短暂持有此锁。创建视图需要在数据库中的system.views集合上获得一个附加的排他锁。 该锁将阻止在数据库中创建或修改视图,直到命令完成。
在MongoDB 4.2之前,db.createCollection()在父数据库上获得了排他锁,从而阻止了对数据库及其所有集合的所有操作,直到操作完成。
例子:
创建Capped Collection
Capped Collection的集合具有最大的大小或文档数,可防止其增长到超过最大阈值。 所有设置上限的集合必须指定最大大小,并且还可以指定最大文档数。 如果集合在达到最大文档数之前达到最大大小限制,则MongoDB会删除较旧的文档。 考虑以下示例:
db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )
此命令将创建一个名为log的集合,最大大小为5 MB,最多5000个文档。
使用文档验证创建集合。
3.2 版中的新功能。具有验证的集合将每个插入或更新的文档与validator选项中指定的条件进行比较。根据validationLevel和validationAction,MongoDB 要么返回警告,要么在文档不符合指定条件时拒绝插入或更新文档。
以下示例使用 JSON 模式验证器创建contacts集合(MongoDB 3.6 添加了$jsonSchema运算符以支持 JSON 模式验证。):
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"
}
}
} }
} )
使用验证器后,以下插入操作将使验证失败:
db.contacts.insert( { name: "Amanda", status: "Updated" } )
该方法在WriteResult中返回错误:
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
指定排序规则
db.myColl.find().sort( { category: 1 } )
6.db.createView()
将指定的聚合管道应用于源集合或视图的结果,创建一个视图。 视图充当只读集合,并在读取操作期间按需计算。 您必须在与源集合相同的数据库中创建视图。 MongoDB对视图执行读取操作,这是基础聚合管道的一部分。
视图表现出以下行为:
(1).Read Only
视图是只读的; 对视图的写操作将出错。以下读取操作可以支持视图:
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(索引使用和排序操作)
视图使用基础集合的索引。
由于索引位于基础集合上,因此您无法直接在视图上创建,删除或重建索引,也无法在视图上获取索引列表。
从MongoDB 4.4开始,可以在视图上运行find命令时指定$natural排序。 MongoDB的早期版本不支持对视图进行自然排序。
该视图的基础聚合管道必须遵守100 MB的内存限制,才能阻止排序和阻止组操作。 从MongoDB 4.4开始,您可以在视图上发出带有allowDiskUse:true的find命令,以允许MongoDB使用临时文件来阻止排序和组操作。
在MongoDB 4.4之前,仅聚合命令接受allowDiskUse选项。
(3).Projection Restrictions(投影限制)
视图上的find()操作不支持以下projection运算符:
$
$elemMatch
$slice
$meta
(4).Immutable Name
您不能重命名views。
具体例子参考:https://docs.mongodb.com/manual/reference/method/db.createView/
7.db.currentOp()
返回一个文档,其中包含有关数据库实例正在进行的操作的信息。 db.currentOp()方法包装数据库命令currentOp。
注意:
由于currentOp命令和db.currentOp()帮助程序在单个文档中返回结果,因此currentOp结果集的总大小受文档最大16MB BSON大小限制。
从版本3.6开始,MongoDB提供$currentOp聚合阶段。 $currentOp阶段在一个文档流上返回一个游标,每个文档都报告一个操作。 每个操作文档都受16MB BSON限制,但是与currentOp命令不同,结果集的总大小没有限制。
因此,$currentOp聚合阶段比currentOp命令及其mongo shell帮助器db.currentOp()更可取。
db.currentOp()可以接受过滤器文档或布尔参数。如果将筛选器文档传递给db.currentOp(),则输出仅返回与筛选器匹配的当前操作的信息。 筛选器文档可以包含:
db.currentOp(true) #指定true以包括对空闲连接的操作和系统操作
db.currentOp( { "$all": true } ) #则返回有关所有操作的信息,包括有关空闲连接的操作和系统操作。与db.currentOp(true)是等效的
db.currentOp( { "$ownOps": true } ) #仅返回有关当前用户操作的信息。
db.currentOp和database profiler报告所有 CRUD 操作的相同基本诊断信息,包括以下内容:
例子:
(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
以下示例返回有关从未生成的所有活动运行操作的信息:
db.currentOp(
{
"active" : true,
"numYields" : 0,
"waitingForLock" : false
}
)
以下示例返回有关运行时间超过3秒的数据库db1所有活动操作的信息:
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()
强制mongod将所有未完成的写操作刷新到磁盘并锁定整个mongod实例,以防止其他写操作,直到用户使用相应的db.fsyncUnlock()命令释放该锁为止。
db.fsyncLock()和db.fsyncUnlock()操作维护锁定计数。 db.fsyncLock()递增锁计数,而db.fsyncUnlock()递减锁计数。
要解锁mongod实例进行写入,锁定计数必须为零。 也就是说,对于给定数量的db.fsyncLock()操作,必须发出相应数量的db.fsyncUnlock()操作以解锁实例进行写操作。
9.db.fsyncUnlock()
将db.fsyncLock()在mongod实例上获得的锁定减少1。
要解锁mongod实例进行写入,锁定计数必须为零。 也就是说,对于给定数量的db.fsyncLock()操作,必须发出相应数量的db.fsyncUnlock()操作以解锁实例进行写操作。
10.db.getCollection(name)
返回在功能上等效于使用db.<collectionName>语法的集合或视图对象。
db.getCollection()对象可以访问任何collection methods。
使用db.getCollection()好处在于当集合名字为auth时,此时因为它与数据库方法db.auth()发生名称冲突,直接调用db.auth来执行插入操作将引用db.auth()方法,并且会出错。
11.db.getCollectionInfos()
返回包含当前数据库的集合或视图信息(例如名称和选项)的文档数组。
例子1.返回包含集合信息的所有文档数组
use wang
db.getCollectionInfos()
例子2.返回特定集合的集合信息
use wang
db.getCollectionInfos({name:"blog"})
12.db.getCollectionNames()
返回一个数组,其中包含当前数据库中所有集合的名称和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() (已经不推荐使用了)
指定写关注级别,以确认通过同一连接发出的先前写操作是否成功,并返回该操作的错误字符串。
在2.6版中进行了更改:用于写操作的新协议将写关注点与写操作集成在一起,从而无需单独的db.getLastError()。 现在,大多数写方法都返回写操作的状态,包括错误信息。 在以前的版本中,客户端通常将db.getLastError()与写入操作结合使用以验证写入是否成功。
14.db.getLastErrorObj()(已经不推荐使用了)
指定write concern级别,以确认通过同一连接发出的先前写操作是否成功,并返回该操作的document。 在 2.6 版中进行了更改:write operations的新协议将写入问题与写入操作集成在一起,从而无需单独的db.getLastErrorObj()。 大多数写方法现在返回写操作的状态,包括错误信息。在以前的版本中,Client 端通常结合使用db.getLastErrorObj()和写入操作来验证写入是否成功。
15.db.getLogComponents()
返回当前的详细度设置。 详细设置确定MongoDB为每个日志消息组件生成的日志消息的数量。
如果某个组件继承了其父级的详细级别,则db.getLogComponents()会为该组件的详细级别显示-1。
16.db.getMongo()
返回:当前数据库连接。
shell启动时,db.getMongo()运行。 使用此命令测试mongo shell是否与正确的数据库实例建立连接。
17.db.getName()
返回:当前数据库名称。
18.db.getProfilingLevel()(已经过时)
该方法提供了围绕数据库命令“ profile”的包装器,并返回当前的分析级别。
从1.8.4版开始不推荐使用:将db.getProfilingStatus()用于相关功能。
wang> db.getProfilingLevel()
1
wang>
19.db.getProfilingStatus()
返回:当前profile level配置文件级别,slowOpThresholdMs设置和slowOpSampleRate设置
wang> db.getProfilingStatus()
{ "was" : 1, "slowms" : 200, "sampleRate" : 1 }
20.db.getSiblingDB()
您可以使用db.getSiblingDB()作为使用<database>帮助程序的替代方法。 当使用mongo shell编写脚本(其中没有使用帮助器)时,这特别有用。 请考虑以下操作顺序:
db1 = db.getSiblingDB('wang')
db1.test2.count()
21.db.hostInfo()
返回一个文档,其中包含有关mongod或mongos运行所在的基础系统的信息。 一些返回的字段仅包含在某些平台上。
db.hostInfo()在mongo shell中的hostInfo周围提供了一个帮助器。Linux系统上db.hostInfo()的输出将类似于以下内容:
{
"system" : {
"currentTime" : ISODate("<timestamp>"),
"hostname" : "<hostname>",
"cpuAddrSize" : <number>,
"memSizeMB" : <number>,
"memLimitMB" : <number>, // Available starting in MongoDB 4.0.9 (and 3.6.13)
"numCores" : <number>,
"cpuArch" : "<identifier>",
"numaEnabled" : <boolean>
},
"os" : {
"type" : "<string>",
"name" : "<string>",
"version" : "<string>"
},
"extra" : {
"versionString" : "<string>",
"libcVersion" : "<string>",
"kernelVersion" : "<string>",
"cpuFrequencyMHz" : "<string>",
"cpuFeatures" : "<string>",
"pageSize" : <number>,
"numPages" : <number>,
"maxOpenFiles" : <number>
},
"ok" : <return>
}
22.db.isMaster()
返回描述mongod实例角色的文档。如果mongod是副本集的成员,则ismaster和secondary字段将报告实例是副本集的主要成员还是次要成员。
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指定的操作。 要查找操作及其相应的ID,请参见db.currentOp()
注意:极其谨慎地终止正在运行的操作。 仅使用db.killOp()终止由客户端启动的操作,而不终止内部数据库操作。
从MongoDB 4.0开始db.killOp()方法可以在mongos上运行,并且可以杀死在集群中多个分片上运行的查询(读取操作)。
MongoDB killOp 案例详解:https://mongoing.com/archives/26414
24.db.listCommands()
提供所有数据库命令的列表。 有关这些选项的更广泛的索引,请参见数据库命令文档。
25.db.logout()
结束当前身份验证会话。 如果当前会话未通过身份验证,则此功能无效。
26.db.printCollectionStats()
提供围绕db.collection.stats()方法的包装。 返回每个集合的统计信息,每个集合用三个连字符隔开。
注意:mongo shell中的db.printCollectionStats()不返回JSON。 使用db.printCollectionStats()进行手动检查,并在脚本中使用db.collection.stats()。
27. db.resetError()(已经过时)
1.6版开始不推荐使用。重置db.getPrevError或getPrevError返回的错误消息。提供围绕resetError命令的包装器。
28.db.runCommand() (非常有用的命令太好用了)
参考链接:https://docs.mongodb.com/manual/reference/command/
提供帮助程序来运行指定的database commands。这是发出数据库命令的首选方法,因为它在 Shell 程序和驱动程序之间提供了一致的接口。
例子1,统计表中的记录数
wang> db.runCommand({count:"test2"})
{ "n" : 100, "ok" : 1 }
带条件的统计(查询x字段的值<=20的数量)
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数据库命令的包装。 buildInfo返回一个文档,其中包含用于编译此mongod实例的参数概述。
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()
返回一个文档,该文档报告用于启动mongod或mongos实例的参数和配置选项。有关可用的MongoDB运行时选项的其他信息,请参阅配置文件选项,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()
返回一个文档,概述数据库过程的状态。该命令为数据库命令serverStatus提供了包装。
例子1.返回所有的状态信息
db.serverStatus()
例子2.返回锁信息 R:表示全局读锁 W:全局写锁 r:某个数据库读锁 w:某个数据库写锁
db.serverStatus().locks
例子3.连接数信息
db.serverStatus().connections
32. db.setLogLevel()
为log messages设置单个详细级别。详细级别的范围是0到5,0是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1~5 是调试级别,会记录客户端所有的完整请求。
注意:从版本4.2开始,MongoDB在日志消息中包括调试详细级别(1-5)。 例如,如果详细级别为2,则MongoDB记录D2。 在以前的版本中,MongoDB日志消息仅将D指定为Debug级别。
例子1:该操作将默认详细程度设置为1
db.setLogLevel(1)
查询日志详细等级的命令
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()
设置Profiling捕捉慢查询,类似于MySQL的slow log, mongodb可以监控所有慢的以及不慢的查询。这个工具就是Profiling,该工具在运行的实例上收集有关MongoDB的 写操作,游标,数据库命令等,可以在数据库级别开启该工具,也可以在实例级别开启。该工具会把收集到的所有都写入到system.profile集合中,该集合是一个capped collection。
0:关闭,不收集任何数据。
1:收集慢查询数据,默认是100毫秒
2:收集所有数据
例子1,设置日志级别为1,慢查询阈值为20毫秒,采样率为0.42
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })
查看Profiling的级别
db.getProfilingStatus()
例子2,禁用Profiler并设置慢速操作阈值和采样率
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })
34.db.shutdownServer()
干净安全地关闭当前mongod或mongos进程。 您必须对admin数据库发出db.shutdownServer()操作
例子1,Shut down a mongod
db.getSiblingDB("admin").shutdownServer()
例子2,Force 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()
返回反映单个数据库使用状态的统计信息。
下面的示例将返回的值转换为千字节:
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()
仅适用于副本集和分片群集