2012-10-12 9 views
5

Utilizziamo l'autenticazione basata su MongoDB e voglio eseguire rapidamente un comando per verificare se un utente è già stato creato nel database, in ordina che il burattino non tenti ripetutamente di creare l'utente.Riga di comando MongoDB per mostrare se esiste un utente (per puppet 'unless' clausola ')

Ecco come controlliamo se il set di repliche è inizializzato:

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

è un trucco simile possibile con l'autenticazione? Ho controllato la documentazione qui http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference e non riesco a vedere un modo per farlo?

risposta

13

Sì, su un determinato DB, è possibile utilizzare db.system.users.find({user:'login'}).count() che restituirà 0 se l'utente non esiste.

+1

Sei sicuro di dover usare 'db.system'? Non dovrebbe 'db.users.find (...). Count()' fare lo stesso? – Philipp

+2

'db.users.find (...). Count()' restituirà il numero di documenti che sono memorizzati nella collezione 'users'. Questa raccolta non è speciale e non è correlata al processo di autenticazione MongoDB. –

+0

Ah, ok. Pensavo che l'OP stesse parlando di una normale raccolta chiamata utenti, non degli utenti del database stesso. – Philipp

1

Oggi ho appena provato e -u-p opzioni per mongo comando e ha funzionato per me:

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

Nota l'ultimo arg "admin" - è il nome del database, per cui si esegue l'autenticazione.

Problemi correlati