2015-10-15 18 views
8

私はMongoDBのfindOne()find().limit(1)よりもはるかに遅いと言うソースを読んだことがありますが、それ以外は私も聞いてきました。実際のところ真実は何ですか? "find()+ limit()を使用すると、findOne()は常にドキュメントを読み込み+返すので、find()はカーソルを返します。あなたがカーソルを反復するならば、データ。MongoDB/Mongooseの `find()。limit(1)`や `findOne()`の方が速いですか?

SE answer from 2011: "find()。limit(1)ドキュメントを取得した場合、速度の差が消えているように見えます。また、MongoDB JavaScriptドライバで大きな速度差を再現できませんでした。 MongoDB Javaドライバを使用してください。

答えが何であれ、私はMongooseのfind().sort().limit(1)findOne()を使用することと一貫しています。

答えて

13

両方とも同等です。

find().limit(1)を実行すると、サーバーに送信されるクエリはありません。クエリクライアント側を準備するだけです。ドキュメントを取得しない限り、カーソル(つまり、sortを追加することによって)を変更することができます。

したがって、find().limit(1)のベンチマークを行うと、クエリが実行されないため、時間が大幅に短縮されます。おそらく無用なコードをベンチマークしていると思います。

関連する問題