Ce n'est pas le cas. La première requête, db.users.find({"user":{"login":"tester"}});
, signifie que vous recherchez un user
qui équivaut à {"login":"tester"}
objet complètement, pas un utilisateur avec login
champ est égal à tester
. Il y a un document qui correspond à ce critère et ce document est en fait renvoyé comme résultat de la requête.
De même, la deuxième requête, db.users.find({"user":{"name":"anil"}});
, signifie que vous recherchez un user
qui est égal à {"name":"anil"}
objet complètement. Il n'y a pas un tel user
. Il y a un document qui correspond partiellement à votre requête mais ce n'est pas suffisant.
Si vous cherchez un user
avec name
est égal à anil
, utilisez la notation par points pour accéder au sous-document, comme vous l'avez fait dans votre deuxième groupe de requêtes.
Oui. c'est la bonne manière.