2017-02-24 9 views
0

新しいプロジェクトでmongoDBを使用しようとしています。MongoDB:1つのキーですべてのエントリを見つける

私は私のデータベースでこの文書を持っている:

{ "_id" : ObjectId("ID"), "local" : { "rank" : "null", "password" : "PASSWORD", "email" : "EMAIL" }, "__v" : 0 } 
{ "_id" : ObjectId("ID"), "local" : { "rank" : "admin", "password" : "PASSWORD", "email" : "EMAIL" }, "__v" : 0 } 
{ "_id" : ObjectId("ID"), "local" : { "rank" : "null", "password" : "PASSWORD", "email" : "EMAIL" }, "__v" : 0 } 

は、私がnullのランクのすべての文書を検索します。

だから私はテスト:

db.users.find({local:{rank:"null"}}) 

しかし、それは動作しません。

私はコマンドを使用してテストする場合:

db.users.find({"local":{ "rank" : "null", "password" : "PASSWORD", "email" : "EMAIL" }}) 

それは動作します。なぜそれが最初のコマンドで動作しないのですか?

+0

ドキュメントオブジェクトに対して両方の比較を行っています。 2番目の方法は、 'local'という文書と比較するためです。ドキュメント内の特定のフィールドを比較するには、ドット表記法を使用する必要があります。 'db.users.find({" local.rank ":" null "})'を試してください。 – Veeram

+0

ありがとうございました:) – Kaayo25

+0

大歓迎です。私は先に進んで答えとしてそれを追加しましょう。 – Veeram

答えて

0

あなたはドキュメントに対してどちらの比較をしていますか。 2番目のものは、文書localと一致します。

文書内の特定のフィールドを比較するには、ドット表記法を使用する必要があります。

db.users.find({"local.rank":"null"}). 

埋め込みドキュメントを照会する方法の詳細。 https://docs.mongodb.com/manual/core/document/#embedded-documents

関連する問題