これは実際にはありません。最初のクエリ、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番目のクエリグループで行ったように、サブドキュメントにアクセスします。
はい。これが正しい方法です。