Setting default database for MongoDB shell

2020-05-19 06:49发布

When I go into the mongo shell in my terminal, it always starts with the database test, which is the wrong database. Can you set mongo to start in a specific database?

3条回答
够拽才男人
2楼-- · 2020-05-19 07:05

It's entirely possible to set a default, albiet in a slightly strange way. Here's what I do for using automatic authentication to an admin in .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()

To directly answer the question, I'd think the way to accomplish this is simply by executing a check to see if the current database loaded up is "test" and alter only if that's the case, so.

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

This allows both selecting a database at the command line and setting a default. Naturally it'll prevent you from overriding and using the "test" db from the command line, but I think that's a bit of a strange use case given the question. Cheers.

查看更多
在下西门庆
3楼-- · 2020-05-19 07:21

Command Line

You can select the database to use on the mongo command line, eg for 'mydb':

mongo mydb

If a database name is not provided, 'test' will be used.

In .mongorc.js

If you want to set a default database without specifying on the command line each time, you can add a line to the .mongorc.js file in your home directory:

db = db.getSiblingDB("mydb")

The .mongorc.js file is executed after the mongo shell is started, so if you set a default here it will override a database specified on the command line.

查看更多
时光不老,我们不散
4楼-- · 2020-05-19 07:25

At the moment (looking 2.6.4) there is no way to universally set the default DB for the client. It seems hardcoded to test. In my anger I downvoted the Stennie's answer [1] because it doesn't work if your user does not have permissions to access the test database. But if your case is not such, then it may work good enough.

[1] and I can't reverse my vote now unless answer is edited

查看更多
登录 后发表回答