如何更改mongoshell提示符?

时间:2017-10-24 14:44:28

标签: mongodb mongo-shell

我最近重新安装了从企业社区版本的Mongodb切换。然而,当我开始mongo时,这是我得到的提示格式:

MongoDB Enterprise > 

如何将其更改为标准提示版本? (如果我没有错,请>

2 个答案:

答案 0 :(得分:2)

您可以通过设置prompt变量来更改 shell会话中的提示。例如,在Mongo shell中发出以下命令......

var prompt="this_prompt >"

...将导致shell的提示符更改为:

this_prompt >

您可以通过更新.mongorc.js来更改所有未来会话的默认提示(您将在$ HOME目录中找到它,如果它不存在,则只需创建它)。以下是.mongorc.js ...

的新增内容
var prompt=function() {
    return ISODate().toLocaleTimeString() + " > ";
}

...将导致此提示:

:~/dev/tools/mongodb/mongodb-osx-x86_64-3.4.7/bin$ ./mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
16:09:43 >
16:09:57 >

或者,要获得此提示:>只需将以下内容添加到.mongorc.js

var prompt=">"

您的问题仍有子文本,即; 现有的MongoDB Enterprise >提示来自哪里?。很难说但是......

  • 也许你有一个全球mongorc.js;如果您使用的是* nix系统,请查看/etc/mongorc.js;如果您使用的话,请查看%ProgramData%\MongoDB
  • 查找rc文件时的Mongo行为也受环境变量的影响,更多详情in the docs

答案 1 :(得分:0)

当您在互联网上搜索该主题时,通常会发现以下功能。如果您想包含现有提示,请使用函数defaultPrompt(),例如

prompt = function() {
    if (typeof db == 'undefined') 
        return '(nodb)> ';
    // Check the last db operation
    try {
        db.runCommand( {getLastError:1} );
    } catch (e) {
        print(e);
    }

    var user = db.runCommand({connectionStatus : 1}).authInfo.authenticatedUsers[0] 
    if (user) {
        return user.user + "@" + db + " " + defaultPrompt();
    } else {
        return "(anonymous)@" + db + " " + defaultPrompt();
        //return db + " " + defaultPrompt(); // if you prefer
    }
}

提示如下:

admin@mip mongos>

mip shard001:ARBITER>

admin@mip configRepSet:PRIMARY>