轻松掌握MongoDB 4.4常用命令:快速提升数据库管理效率
  nQkVcpdWfLDr 2023年11月02日 54 0

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

轻松掌握MongoDB 4.4常用命令:快速提升数据库管理效率_筛选器

例子2.返回特定集合的集合信息

use wang
db.getCollectionInfos({name:"blog"})

轻松掌握MongoDB 4.4常用命令:快速提升数据库管理效率_数据库_02

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。

轻松掌握MongoDB 4.4常用命令:快速提升数据库管理效率_数组_03

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

轻松掌握MongoDB 4.4常用命令:快速提升数据库管理效率_数据库_04

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)

轻松掌握MongoDB 4.4常用命令:快速提升数据库管理效率_数组_05

查询日志详细等级的命令

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

仅适用于副本集和分片群集

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  nQkVcpdWfLDr   2023年11月13日   28   0   0 数据数据库SQL
  b1UHV4WKBb2S   2023年11月13日   30   0   0 阴影模糊数组
  nQkVcpdWfLDr   2023年11月13日   42   0   0 数组sort函数python
nQkVcpdWfLDr