2012-10-12 6 views
5

MongoDBユーザベース認証を使用していて、ユーザがデータベースにすでに作成されているかどうかを確認するコマンドをすばやく実行したい人形が繰り返しユーザーを作成しようとしないように指示します。ここでユーザが存在するかどうかを表示するMongoDBのコマンドライン(人形句 '句'の場合)

は、レプリカセットが初期化している場合、我々がチェックする方法である:

/usr/bin/mongo --host ${members[0]} --quiet --eval 'rs.status().ok' | grep -q 1 

同様のトリックが認証で可能ですか?私はここでドキュメントを確認したhttp://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Referenceと私はそれを行う方法を見ることができないのですか?

答えて

13

はい、特定のDBでは、ユーザが存在しない場合は0を返すdb.system.users.find({user:'login'}).count()を使用できます。

+1

あなたは 'db.system'を使用する必要はありますか? 'db.users.find(...)。count()'は同じであるべきですか? – Philipp

+2

'db.users.find(...)。count()'は、 'users'コレクションに格納されている文書の数を返します。このコレクションは特別なものではなく、MongoDB認証プロセスとは関係ありません。 –

+0

ああ、大丈夫です。私はOPが、データベースそのもののユーザーについてではなく、ユーザーという名前の通常のコレクションについて話していると思っていました。 – Philipp

1

今日、私はちょうどmongoコマンドの-u-pオプションを試してみました、それが私の仕事:

mongo --port 27037 --quiet -u superuser -p pwd 
    --eval "db.system.users.find({user:'user3'}).count()" admin 

注最後の「管理者」argが - それはあなたが認証されているデータベースの名前です。

関連する問題