设置MongoDB shell的默认数据库

时间:2012-07-04 23:28:36

标签: shell mongodb terminal

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

3 个答案:

答案 0 :(得分:42)

命令行

您可以选择要在mongo command line上使用的数据库,例如“mydb”:

mongo mydb

如果未提供数据库名称,将使用“test”。

在.mongorc.js

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

db = db.getSiblingDB("mydb")

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

答案 1 :(得分:4)

完全有可能以一种稍微奇怪的方式设置默认的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,但我认为这是一个奇怪的用例,给出了这个问题。干杯。

答案 2 :(得分:1)

目前(看上去2.6.4)没有办法普遍为客户端设置默认数据库。似乎硬编码为test。在我的愤怒中,我低估了Stennie的答案[1],因为如果您的用户没有访问测试数据库的权限,它就无法工作。但如果您的情况不是这样,那么它可能会运作良好。

[1]我现在无法撤销我的投票,除非编辑了答案