web-dev-qa-db-ja.com

MongoDBシェルのデフォルトデータベースの設定

私のターミナルでmongo Shellに入ると、それは常にデータベーステストから始まります。これは間違ったデータベースです。 mongoを特定のデータベースで開始するように設定できますか?

コマンドライン

mongo command line で使用するデータベースを選択できます(例: 'mydb')。

mongo mydb

データベース名が指定されていない場合は、「test」が使用されます。

.mongorc.js

コマンドラインで毎回指定せずにデフォルトのデータベースを設定したい場合は、 .mongorc.js ホームディレクトリ内のファイル:

db = db.getSiblingDB("mydb")

.mongorc.jsファイルはmongoシェルの起動後に実行されるため、ここでデフォルトを設定すると、コマンドラインで指定されたデータベースが上書きされます。

48
Stennie

少し奇妙な方法でデフォルトの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」dbをオーバーライドして使用することはできなくなりますが、質問を考えると、これは少し奇妙な使用例だと思います。乾杯。

5
bradq

現時点(2.6.4を参照)では、クライアントのデフォルトDBを普遍的に設定する方法はありません。 testにハードコードされているようです。私の怒りの中で、Stennieの回答[1]に反対票を入れました。これは、ユーザーがテストデータベースにアクセスする権限を持っていない場合は機能しないためです。しかし、あなたのケースがそうでない場合、それは十分にうまくいくかもしれません。

[1]回答を編集しない限り、今は投票を取り消すことはできません

1
akostadinov