Dit is eigenlijk niet. De eerste zoekopdracht, db.users.find({"user":{"login":"tester"}}); , betekent dat u op zoek bent naar een user dat is gelijk aan {"login":"tester"} object volledig, geen gebruiker met login veld is gelijk aan tester . Er is één document dat overeenkomt met dat criterium en dat document is daadwerkelijk geretourneerd als het zoekresultaat.
Evenzo is de tweede zoekopdracht, db.users.find({"user":{"name":"anil"}}); , betekent dat u op zoek bent naar een user dat is gelijk aan {"name":"anil"} object volledig. Er is niet zo'n user . Er is één document dat gedeeltelijk overeenkomt met uw vraag, maar het is niet genoeg.
Als u op zoek bent naar een user met name is gelijk aan anil , gebruik Puntnotatie om toegang te krijgen tot het subdocument, zoals u deed in uw tweede groep zoekopdrachten.
Ja. dit is de juiste manier.