Как изменить подсказку mongoshell?

Я недавно переустанавливал Mongodb, переключаясь с корпоративной версии на версию сообщества. Тем не менее, когда я начинаю mongo, это быстрый формат, который я получаю:

MongoDB Enterprise > 

Как я могу изменить его на стандартную версию подсказки? (То есть, > если я не ошибаюсь)

1 ответ

Решение

Вы можете изменить приглашение в сеансе оболочки, установив prompt переменная. Например, выполнив следующую команду в оболочке Mongo...

var prompt="this_prompt >"

... приведет к изменению приглашения оболочки на:

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; заглянуть в /etc/mongorc.js если вы работаете в системе * nix или %ProgramData%\MongoDB если вы на Windows
  • Поведение Mongo при поиске rc-файла также зависит от переменных среды, более подробно в документации.

Когда вы ищете в Интернете эту тему, часто вы найдете функцию ниже. Если вы хотите включить существующее приглашение, используйте функцию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>
Другие вопросы по тегам