OPTIONS
翻译或纠错本页面

FAQ: mongo 命令行

如何在 mongo 命令行中输入多行命令?

如果你的结束行是 ('(')、 ('{') 或者 ('[') ,那么下面的命令行将会以 ("...") 开始,直到你输入与之对应的 (')')、 ('}') 或者 (']')。mongo 命令行程序将会等待你输入配对括号后再执行,正如下面的例子:

> if ( x > 0 ) {
... count++;
... print (x);
... }

你可以输入两个空白行结束当前的多行命令,如下面的例子:

> if (x > 0
...
...
>

我可以临时连接另一个数据库吗?

你无须切换数据库就可以使用 db.getSiblingDB() 方法连接另一个数据库,如下面的例子:此时正在使用 test 数据库,然后连接 ``sampleDB``数据库。

use test

db.getSiblingDB('sampleDB').getCollectionNames();

mongo``命令行支持 ``<Tab> 自动完成和其它快捷键吗?

mongo 命令行程序支持快捷键。比如,

  • 使用上/下方向键可以滑动查看之前的命令。在 :ref:`.dbshell <mongo-dbshell-file>`文件中查看更多说明。

  • 使用 <Tab> 可以自动完成命令或者展开可能需要的命令列表,如下面的例子:使用 <Tab> 列出以 'c' 开头的方法:

    db.myCollection.c<Tab>
    

    因为在众多方法的集合中有很多以 'c' 开始,所以 <Tab> 将会列出这些方法。

所有快捷键,请看 Shell Keyboard Shortcuts

我可以自定义 mongo 命令行的提示符吗?

1.9 新版功能.

你可以通过设置 prompt 变量修改 mongo 命令行的提示符。这样可以使其显示更多的提示信息。

你可以将 prompt 设置为任意字符串或者通过JavaScript代码返回一个字符串,考虑一下下面的例子:

  • 使命令提示符显示正在使用的主机和数据库:

    var host = db.serverStatus().host;
    var prompt = function() { return db+"@"+host+"> "; }
    

    The mongo shell prompt should now reflect the new prompt:

    test@my-machine.local>
    
  • 使命令提示符显示数据库统计数:

    var prompt = function() {
                    return "Uptime:"+db.serverStatus().uptime+" Documents:"+db.stats().objects+" > ";
                 }
    

    The mongo shell prompt should now reflect the new prompt:

    Uptime:1052 Documents:25024787 >
    

你可以在 .mongorc.js 文件中为提示符添加一个逻辑值,每次打开 mongo 命令行都可以设置其提示符。

能否使用外部编辑器编辑较长的命令?

在打开 mongo 命令行程序之前,通过设置 EDITOR 环境变量可以在 mongo 命令行中使用你自己的编辑器。打开 mongo 命令行之后,你也可以输入 edit <variable>edit <function> 来使用外部指定编辑器,如下面的例子:

  1. 在命令提示符设置 EDITOR 变量:

    EDITOR=vim
    
  2. 启动 mongo 命令行程序:

    mongo
    
  3. 定义一个函数 myFunction

    function myFunction () { }
    
  4. 使用你的编辑器编辑这个函数:

    edit myFunction
    

    这行命令将会打开 vim 编辑窗口。请注意保存所修改的文件。

  5. 输入 myFunction 调用该函数:

    myFunction
    

    结果将会是你从编辑器中修改以后的:

    function myFunction() {
        print("This was edited");
    }