2012-10-12 6 views
5

Używamy uwierzytelniania opartego na użytkowniku MongoDB i chcę szybko uruchomić polecenie, aby sprawdzić, czy użytkownik został już utworzony w bazie danych, w nakazać, aby marionetka nie próbowała wielokrotnie tworzyć użytkownika.Wiersz poleceń MongoDB do pokazywania, czy istnieje użytkownik (w przypadku lalek klauzula "until")

Oto, w jaki sposób sprawdzić, czy zestaw został zainicjowany replika:

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

podobny trik możliwe z uwierzytelnianiem? Sprawdziłem dokumentację tutaj http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference i nie widzę sposobu na zrobienie tego?

Odpowiedz

13

Tak, w danym DB można użyć db.system.users.find({user:'login'}).count(), która zwróci 0, jeśli użytkownik nie istnieje.

+1

Czy jesteś pewien, że musisz używać 'db.system'? Czy nie powinien "db.users.find (...). Count()" zrobić to samo? – Philipp

+2

'db.users.find (...). Count()' zwróci liczbę dokumentów przechowywanych w kolekcji 'users'. Ta kolekcja nie jest specjalna i nie jest związana z procesem uwierzytelniania MongoDB. –

+0

Ah, ok. Myślałem, że OP mówi o normalnej kolekcji o nazwie użytkownicy, a nie o użytkownikach samej bazy danych. – Philipp

1

Dzisiaj ja tylko starałem -u i -p opcje polecenia mongo i pracował dla mnie:

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

Uwaga ostatnia „admin” arg - to nazwa bazy danych, do której są uwierzytelniania.

Powiązane problemy