2017-12-06 10 views
0

MongoDBドキュメントには存在しないキーを見つけたいと思います。 次のドキュメントをご覧ください。不明なキー(ドキュメントにはありません)を持つMongoDBドキュメントを確認してください

{ 
"_id" : ObjectId("523b6e61fb408eea0eec2648"), 
"userid" : "abby", 
"score" : 82 
} 

私はMongo DBをどのドキュメントにもないキーで照会する必要があるという要件があります。キー=名前と言う。 私のdbコレクションのサイズは10 GBです。 ここで、キー=名前が存在するかどうかをコレクションで確認しますか?

db.getCollection('score').find({"name":{$exists:true}}) 

上記のクエリは、天気がキー名が文書内に存在しているか、いないことを見つけるために、10以上の秒を取っています。 私の質問は、指定されたキーがその文書にここにない場合、応答をすぐに得る方法があることです。

私が提供するリンクを確認すると、 はドキュメント内の既存のキーをチェックしていることを知りました。 私の場合は、どのドキュメントにもないキーをチェックしています。

+0

[MongoDBのクエリフィールドを改善しました](https://stackoverflow.com/questions/9009987/improve-querying-fields-exist-in-mongodb) –

答えて

0

私は単にそのキーにインデックスを作成します。これは、一般的にクエリをスピードアップする必要があり

db.score.createIndex({"name": 1}) 

編集1:

私の最初の仮定が間違っている:クエリがインデックスによって高速化されていませんが存在します。このトピックの詳細:Improve querying fields exist in MongoDB

+0

ありがとうございました私は名前にインデックスを追加しようとしました。そして、私は検査されたドキュメントの数をチェックした後、再びクエリが同じ時間を取っていることを知りました.. – Raju

+0

私のMomgoDBバージョンは3.0です – Raju

+0

@ラジ:ちょうどここにこのリンクを見た:https://stackoverflow.com/questions/9009987/better-querying-fields-mongodbに存在します。既存のクエリではインデックスがうまく動作しません。一般的な提案は、スキーマを変更してインデックスを効率的に使用できるようにすることです。 –

関連する問題