设置MongoDB shell的默认数据库

Hol*_*bæk 35 shell terminal mongodb

当我进入终端中的mongo shell时,它总是从数据库测试开始,这是错误的数据库.你能设置mongo在特定的数据库中启动吗?

Ste*_*nie 45

命令行

您可以选择要在mongo命令行上使用的数据库,例如'mydb':

mongo mydb
Run Code Online (Sandbox Code Playgroud)

如果未提供数据库名称,则将使用"test".

在.mongorc.js

如果要在每次都不在命令行上指定的情况下设置默认数据库,可以.mongorc.js在主目录中的文件中添加一行:

db = db.getSiblingDB("mydb")
Run Code Online (Sandbox Code Playgroud)

.mongorc.jsmongoshell启动后执行该文件,因此如果在此处设置默认值,它将覆盖在命令行上指定的数据库.

  • 我没有意识到.mongorc.js的影响.使用.mongorc.js时要小心,因为当您连接到其他数据库(如生产数据库)时,它仍将运行相同的命令. (3认同)
  • 我的意思是设置一个默认数据库,所以我不必每次都在测试中启动.我现在在.bash_profil中设置了一个别名. (2认同)
  • @kirk:仅供参考,如果你不想在shell启动时运行`.mongorc.js`,你可以运行`mongo --norc`. (2认同)

小智 5

完全有可能以一种稍微奇怪的方式设置默认的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()
Run Code Online (Sandbox Code Playgroud)

为了直接回答这个问题,我认为完成此操作的方法只是执行检查以查看当前加载的数据库是否为“ test”,并且仅在这种情况下才进行更改。

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

这样既可以在命令行中选择数据库,又可以设置默认值。自然地,它可以防止您从命令行覆盖和使用“ test”数据库,但是考虑到这个问题,我认为这是一个奇怪的用例。干杯。