38

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

4

3 回答 3

51

命令行

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

mongo mydb

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

在 .mongorc.js 中

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

db = db.getSiblingDB("mydb")

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

于 2012-07-04T23:34:31.387 回答
5

完全有可能以一种有点奇怪的方式设置默认值。这是我在 .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()

要直接回答这个问题,我认为完成此问题的方法是简单地执行检查以查看当前加载的数据库是否为“测试”,并且仅在这种情况下进行更改,所以。

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

这允许在命令行选择数据库并设置默认值。自然,它会阻止您从命令行覆盖和使用“测试”数据库,但我认为考虑到这个问题,这有点奇怪。干杯。

于 2014-11-04T20:08:04.457 回答
1

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

[1] 除非编辑答案,否则我现在不能撤销我的投票

于 2014-10-10T15:07:58.893 回答