Incrível, você vai adorar Mongo.
No exemplo que você postou, o programa itera por meio de um conjunto de resultados. No problema de usuário/senha, você descreve o que está realmente tentando fazer é obter um documento (não um conjunto de documentos) com base em alguns critérios.
No shell ficaria assim:
n = "login"
p = "password"
db.users.findOne({ user: n, password: p})
Observe que estou usando findOne em vez de find que retorna um documento em vez de um cursor para muitos documentos.
Agora, vamos dar uma olhada no exemplo do driver java:
BasicDBObject query = new BasicDBObject();
query.put("i", 71);
cur = coll.find(query);
while(cur.hasNext()) {
System.out.println(cur.next());
}
O BasicDBObject cria o objeto de consulta e então você coloca diferentes critérios que juntos formam sua consulta.
Então, em vez de
query.put("i", 71);
você faria algo como:query.put("user", n)
query.put("password", p)
e... em vez do loop while, use findOne em vez de find para que você não precise iterar sobre o conjunto de resultados de 1 objeto (sem sentido).
Você pode ler mais sobre findOne() aqui .