Това всъщност не е така. Първата заявка, db.users.find({"user":{"login":"tester"}}); , означава, че търсите user което е равно на {"login":"tester"} обект напълно, а не потребител с login поле е равно на tester . Има един документ, който отговаря на този критерий и този документ всъщност се връща като резултат от заявката.
По същия начин, втората заявка, db.users.find({"user":{"name":"anil"}}); , означава, че търсите user което е равно на {"name":"anil"} обект напълно. Няма такъв user . Има един документ, който частично съвпада с вашето запитване, но това не е достатъчно.
Ако търсите user с name е равно на anil , използвайте точкова нотация за достъп до поддокумента, както направихте във втората си група заявки.
да това е правилният начин.