これは実際にはありません。最初のクエリ、db.users.find({"user":{"login":"tester"}}); 、userを探していることを意味します これは{"login":"tester"}に相当します loginを持つユーザーではなく、完全にオブジェクト フィールドはtesterと同じです 。その基準に一致するドキュメントが1つあり、そのドキュメントは実際にクエリ結果として返されます。
同様に、2番目のクエリdb.users.find({"user":{"name":"anil"}}); 、userを探していることを意味します これは{"name":"anil"}と同じです 完全にオブジェクト。そのようなuserはありません 。クエリと部分的に一致するドキュメントが1つありますが、それだけでは不十分です。
userをお探しの場合 nameを使用 anilに等しい 、ドット表記を使用します 2番目のクエリグループで行ったように、サブドキュメントにアクセスします。
はい。これが正しい方法です。