当我进入终端中的Mongo Shell时,它总是以错误的数据库test启动。您是否可以将Mongo设置为在特定数据库中启动?
你可以在 mongo 命令行 上选择要使用的数据库,例如 'mydb':
mongo mydb
如果没有提供数据库名称,则将使用“test”。
如果您想设置默认数据库而不必每次在命令行上指定,可以在主目录中的.mongorc.js
文件中添加一行:
db = db.getSiblingDB("mydb")
.mongorc.js
文件在mongo
shell启动后执行,因此如果您在此处设置默认值,它将覆盖在命令行上指定的数据库。
.mongorc.js
,可以运行mongo --norc
。 - Stennietest
的权限,则在 .mongorc.js
启动之前进行身份验证时会被踢出。 - akostadinov完全可以通过一种略微奇怪的方式设置默认值。以下是在 .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')
目前(查看2.6.4),没有一种通用的方法可以为客户端设置默认的数据库。它似乎是硬编码到 test
中的。我很生气地给 Stennie 的答案 [1] 投了反对票,因为如果您的用户没有权限访问测试数据库,则该答案无法正常工作。但是,如果您的情况不是这样,那么它可能足够好。
[1] 我现在无法撤回我的投票,除非答案被编辑过。
strings /usr/bin/mongo | grep 'dbName || "test"'
显示多个实例。 - Peter Hansen