当我进入终端的mongo shell时,它始终以数据库测试开始,这是错误的数据库。你能设置mongo在特定的数据库中启动吗?
答案 0 :(得分:42)
您可以选择要在mongo command line上使用的数据库,例如“mydb”:
mongo mydb
如果未提供数据库名称,将使用“test”。
如果要在每次都没有在命令行中指定的情况下设置默认数据库,可以在主目录中的.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]我现在无法撤销我的投票,除非编辑了答案