Isso não é na verdade. A primeira consulta,
db.users.find({"user":{"login":"tester"}}); , significa que você está procurando um user que é igual a {"login":"tester"} objeto completamente, não um usuário com login campo é igual a tester . Há um documento que corresponde a esse critério e esse documento realmente retornou como resultado da consulta. Da mesma forma, a segunda consulta,
db.users.find({"user":{"name":"anil"}}); , significa que você está procurando um user que é igual a {"name":"anil"} objeto completamente. Não existe tal user . Há um documento que corresponde parcialmente à sua consulta, mas não é suficiente. Se você estiver procurando por um
user com name igual a anil , use Notação de ponto para acessar o subdocumento, como você fez em seu segundo grupo de consultas. Sim. esta é a maneira correta.