• mongodb指南(翻译)(六) developer zone 数据库之命令(一)


    每一个mongodb服务器可以支持多个数据库。出于安全和方便管理的考虑,每一个数据库都是独立的,并且每一个数据库的数据也是分开存储的。

    一个数据库由一个或多个集合组成,文档(对象)存储在集合中,一个可选的安全证书可以控制访问。

    命令

    简介

    mongo数据库有一个数据库命令的概念。数据库命令可以告诉数据库执行一些特殊的操作,或者请求当前操作的状态信息。

    一条命令是作为针对名为$cmd的特殊集合的查询发送给数据库的。数据库会把命令结果放到一个单独的文档中返回-使用findOne()查看一下你的驱动是否有这个功能。

    一般情况下命令的语法是:

    db.$cmd.findOne( { <commandname>: <value> [, options] } );

    shell为它提供了辅助函数:

    db.runCommand( { <commandname>: <value> [, options] } );

    例如,查看我们数据库当前轮廓(profile)级别设置,我们可以调用:

    > db.runCommand({profile:-1});
    {
    "was" : 0.0 ,
    "ok" : 1.0
    }

    对于很多的数据库命令,一些驱动实现封装了一些方法使得更加容易使用。例如,mongo shell提供了:

    > db.getProfilingLevel()
    0.0

    让我们看一下这个方法都做了什么:

    > print( db.getProfilingLevel )
    function () {
    var res = this._dbCommand({profile:-1});
    return res ? res.was : null;
    }
    > print( db._dbCommand )
    function (cmdObj) {
    return this.$cmd.findOne(cmdObj);
    }

    很多命令都有辅助函数-查看你的驱动的文档来获取更多信息。

    特权命令
    某些操作仅仅是为数据库管理员准备的。这些特权操作可能仅会在名为admin的特殊数据库上执行.

    > use admin;
    > db.runCommand("shutdown"); // shut down the database

    如果数据库变量没有设置为admin,你可以使用adminCommand(在早于1.8的版本中是_adminCommand)自动切换到正确的数据库(只对当前操作有用):

    > db.adminCommand("shutdown");

    (对于这个特别的命令,这里还有一个shell辅助函数,db.shutdownServer.)

    获取某个命令的帮助信息

    在shell中使用commandHelp可以获取某个命令的帮助信息:

    > db.commandHelp("datasize")
    help for: datasize example: { datasize:"blog.posts", keyPattern:{x:1}, min:{x:10}, max:{x:55} }
    NOTE: This command may take awhile to run

    (有些命令目前尚无帮助信息)

    getLog命令

    log相关的命令

    使用getLog命令你可以得到一个log类别变量的列表,和针对这些类别所有的消息。这个命令在1.9.2中引入。

    > db.adminCommand({getLog:"*|global|<cat>"})

    获取类别

    传递给getLog一个"*"选项,就可以获取到所有可能存在的log类别:

    > db.adminCommand({getLog:"*"})
    {
    "names" : [
    "global",
    "rs",
    "startupWarnings" ],
    "ok" : 1
    }

    输出表明这里有3种类别的log可用:"global"(见下),复制组通知,启动警告。
    "global"类别

    这个特殊的“global”类别包含了所有其他类别。你可以传入任何类别来限制返回的行。

    > db.adminCommand({getLog:"global"})
    {
    "log" : [
    "Thu Aug 18 13:57:05 [initandlisten] MongoDB starting : pid=654312892 port=27017
    dbpath=/tmp/db1/ 64-bit host=localnose",
    "Thu Aug 18 13:57:05 [initandlisten] recover : no journal files present, no recovery needed",
    "Thu Aug 18 13:57:07 [websvr] admin web console waiting for connections on port 28017",
    "Thu Aug 18 13:57:07 [initandlisten] waiting for connections on port 27017",
    "Thu Aug 18 13:57:07 [initandlisten] connection accepted from 127.0.0.1:56703 #1",
    "Thu Aug 18 13:57:07 [rsStart] replSet STARTUP2",
    "Thu Aug 18 13:57:07 [rsSync] replSet SECONDARY",
    "Thu Aug 18 13:57:10 [initandlisten] connection accepted from 127.0.0.1:56704 #2"
    ],
    "ok" : 1
    }
    setParameter命令

    设置运行时参数

    这个命令允许在运行时改变一些内部选项和一些命令行参数。

    这个命令在1.8加入但是一些选项在那之后已经改变了。请关注它们变得可用的版本。

    > db.adminCommand({setParameter:1, option1:true, ...})
    // real example to increase logging
    > db.adminCommand({setParameter:1, logLevel:4})
    //disallow table/collection scans
    > db.adminCommand({setParameter:1, notablescan:true})
    { "was" : false, "ok" : 1 }
    > db.foo.insert({_id:1, name:false})
    > db.foo.find()
    { "_id" : 1 , "name" : false }
    > db.foo.find({name:true})
    error: { "$err" : "table scans not allowed:test.foo", "code" : 10111 }
    > db.adminCommand({setParameter:1, notablescan:false})
    { "was" : true, "ok" : 1 }
    > db.foo.find({name:true})

    选项

     选项  值  描述  可用版本
     syncdelay  数字  内存刷新间隔  1.8
     logLevel  整型(0-5)  设置记录级别  1.8
     quiet  true/false  记录安静模式  1.8
     notablescan  true/false  在需要表扫描时触发错误  1.8
     journalCommitInterval  数字(1-500ms)  日志(组)提交窗口  1.9.1



    获取参数状态
    正像你可以设置运行时的参数,你还可以获取他们。

    > db.adminCommand({getParameter:1, syncdelay:true})
    { "syncdelay" : 60, "ok" : 1 }
    cloneCollection命令

    从一台服务器拷贝单个集合到另一台服务器。

    db.runCommand( { cloneCollection: <namespace>,
    from: <host> [,query: <query_filter>] [,copyIndexes:<bool>] } );

    从一个服务器向另一个服务器拷贝集合。不要在单个的服务器上面使用,因为它存储的目标和源是同一个db.collection(命名空间).

    https://github.com/tomliugen
  • 相关阅读:
    [bbk5102] 第38集 第四章 Flashback Database 02
    index
    [bbk5110] 第41集 第四章 Flashback Database 05
    支持向量机SVM基本问题
    凸优化小结
    博客基本操作
    感知机vs支持向量机
    PAYPAL商户集成指南-IPN&PDT变量列表
    一个IBM人的离职泪:伟大公司,SB老板,苦逼员工 (zz.IS2120.BG57IV3)
    Google Reader 7.1停止服务
  • 原文地址:https://www.cnblogs.com/xinghebuluo/p/2268639.html
Copyright © 2020-2023  润新知