2012-10-12 15 views
5

MongoDB kullanıcı tabanlı kimlik doğrulamasını kullanıyoruz ve bir kullanıcının veritabanında önceden oluşturulmuş olup olmadığını kontrol etmek için hızlıca bir komut çalıştırmak istiyorum. Kukla, tekrar tekrar kullanıcı oluşturmaya çalışmayın. İşteBir kullanıcının varlığını göstermek için MongoDB komut satırı (kukla için 'yan tümcesi')

çoğaltma kümesi başlatıldı etmişse nasıl olacağı:

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

benzer hile kimlik doğrulaması ile mümkün mü? http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference belgelerini kontrol ettim ve bunu yapmanın bir yolunu göremiyorum?

cevap

13

Evet, belirli bir DB'de, kullanıcı yoksa 0 döndürecek db.system.users.find({user:'login'}).count()'u kullanabilirsiniz.

+1

'db.system' kullanmak zorunda olduğunuzdan emin misiniz? Db.users.find (...). Count() 'yapmamalı mıyım? – Philipp

+2

'db.users.find (...). Count()' 'users' koleksiyonunda saklanan belge sayısını döndürür. Bu koleksiyon özel değil ve MongoDB Kimlik Doğrulama işlemi ile ilgili değil. –

+0

Ah, tamam. OP'nin, veritabanının kullanıcıları hakkında değil, kullanıcı adında normal bir koleksiyondan bahsedildiğini düşündüm. – Philipp

1

Bugün sadece mongo komut için -u ve -p seçenekleri denedik ve benim için çalıştı:

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

Not geçen "admin" arg - bu kimliklerini doğrulamaktadır için veritabanının adıdır.

İlgili konular