Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为MongoDB shell设置默认数据库_Shell_Mongodb_Terminal - Fatal编程技术网

为MongoDB shell设置默认数据库

为MongoDB shell设置默认数据库,shell,mongodb,terminal,Shell,Mongodb,Terminal,当我进入终端中的mongo shell时,它总是从数据库测试开始,这是错误的数据库。能否将mongo设置为在特定数据库中启动?命令行 您可以选择要在上使用的数据库,例如“mydb”: mongo mydb 如果未提供数据库名称,将使用“test” In.mongorc.js 如果要设置默认数据库而不每次在命令行上指定,可以在主目录中的文件中添加一行: db = db.getSiblingDB("mydb") .mongorc.js文件是在启动mongoshell之后执行的,因此如果您在此处设

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

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

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

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

db = db.getSiblingDB("mydb")
.mongorc.js
文件是在启动
mongo
shell之后执行的,因此如果您在此处设置默认值,它将覆盖命令行上指定的数据库。

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


[1] 我现在不能逆转我的投票,除非答案被编辑。

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

这允许在命令行中选择数据库并设置默认值。当然,它会阻止您从命令行重写和使用“test”db,但我认为这是一个有点奇怪的用例。干杯。

我的意思是设置要使用的默认数据库,这样我就不必每次都在测试中启动。不过,我现在在.bash_profil中设置了一个别名。我没有意识到.mongorc.js的影响。使用.mongorc.js时要小心,因为当您连接到其他数据库(如生产数据库)时,它仍然会运行相同的命令。@kirk:FYI,如果您不想在shell启动时运行
.mongorc.js
,您可以运行
mongo--norc
。-1,如果您没有访问数据库
test
的权限,则在
.mongorc.js
启动之前,您将被逐出身份验证。默认数据库硬编码的“test”db在哪里?我在root/.mongorc.js中尝试了db=db.getSiblingDB(“mydb”),但没有working@Crazyrubixfan显然,它在mongo shell可执行文件本身中是正确的:
strings/usr/bin/mongo | grep'dbName | | |“test”
显示了多个实例。使用此选项可在连接字符串中添加默认数据库: