为 MongoDB shell 设置默认数据库



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

命令行

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

mongo mydb

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

在 .mongorc 中.js

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

db = db.getSiblingDB("mydb")

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

完全有可能以稍微奇怪的方式设置默认值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()

为了直接回答这个问题,我认为实现这一目标的方法只是通过执行检查以查看当前加载的数据库是否是"测试"并仅在这种情况时才更改,所以。

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

这允许在命令行中选择数据库并设置默认值。当然,它会阻止您从命令行覆盖和使用"test"数据库,但我认为考虑到这个问题,这是一个奇怪的用例。干杯。

目前(查看 2.6.4),无法为客户端通用设置默认数据库。似乎很难编码test.出于愤怒,我对Stennie的答案[1]投了反对票,因为如果您的用户没有访问测试数据库的权限,它就不起作用。但是,如果您的情况不是这样,那么它可能足够好。

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

最新更新