2012-10-12 140 views
5

Estamos utilizando la autenticación basada en el usuario MongoDB y quiero ejecutar rápidamente un comando para verificar si ya se creó un usuario en la base de datos, ordenar que el títere no intente crear repetidamente al usuario.Línea de comando de MongoDB para mostrar si existe un usuario (para la cláusula títere 'a menos')

Así es como, comprobamos si el conjunto de réplicas ha inicializado:

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

Es un truco similar posible con la autenticación? He revisado la documentación aquí http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference y no veo la manera de hacerlo.

Respuesta

13

Sí, en un DB dado, puede usar db.system.users.find({user:'login'}).count() que devolverá 0 si el usuario no existe.

+1

¿Estás seguro de tener que usar 'db.system'? ¿No debería 'db.users.find (...). Count()' hacer lo mismo? – Philipp

+2

'db.users.find (...). Count()' devolverá la cantidad de documentos que están almacenados en la colección 'users'. Esta colección no es especial y no está relacionada con el proceso de Autenticación MongoDB. –

+0

Ah, vale. Pensé que OP estaba hablando de una colección normal llamada usuarios, no de usuarios de la base de datos. – Philipp

1

Hoy he intentado -u y -p opciones para mongo comando y funcionó para mí:

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

Nota la última "admin" arg - es el nombre de la base de datos, a la que se autentifica.

Cuestiones relacionadas