Подтвердить что ты не робот

Настройка базы данных по умолчанию для оболочки MongoDB

Когда я перехожу в оболочку mongo в своем терминале, он всегда начинается с теста базы данных, который является неправильной базой данных. Можете ли вы установить mongo для запуска в конкретной базе данных?

4b9b3361

Ответ 1

Командная строка

Вы можете выбрать базу данных для использования в командной строке mongo, например, для 'mydb':

mongo mydb

Если имя базы данных не указано, будет использоваться "test".

В .mongorc.js

Если вы хотите установить базу данных по умолчанию без указания в командной строке каждый раз, вы можете добавить строку в файл .mongorc.js в вашем домашнем каталоге:

db = db.getSiblingDB("mydb")

Файл .mongorc.js запускается после запуска оболочки mongo, поэтому, если вы установите здесь значение по умолчанию, оно переопределит базу данных, указанную в командной строке.

Ответ 2

Вполне возможно установить по умолчанию, albiet немного странным образом. Вот что я делаю для автоматической авторизации для администратора в .mongorc.js:

//Persist the database selected
var selectedDB = db
//Authenticate
db = db.getSiblingDB("admin")
db.auth('admin','adminpass')
//Switch back to selected DB
db = selectedDB
//Universally allow read queries on secondaries from shell. 
rs.slaveOk()

Чтобы ответить на вопрос, я думаю, что способ выполнить это - просто выполнить проверку, чтобы проверить, загружена ли текущая база данных "test", и измените ее, только если это так.

if(db.name == 'test') db.getSiblingDB('yourdefaultdb')

Это позволяет выбрать базу данных в командной строке и установить значение по умолчанию. Естественно, это помешает вам переопределить и использовать "тест" db из командной строки, но я думаю, что немного странного случая использования задал вопрос. Приветствия.

Ответ 3

В настоящий момент (смотря 2.6.4) нет возможности универсально установить БД по умолчанию для клиента. Кажется, он жестко привязан к test. В моем гневе я отказался от ответа Стенни [1], потому что он не работает, если у вашего пользователя нет разрешений на доступ к тестовой базе данных. Но если ваш случай не такой, то он может работать достаточно хорошо.

[1], и я не могу отменить свой голос сейчас, если не отредактирован ответ