_id 値に基づいて MongoDB からドキュメントを検索しているとします。次のコードのどれが効率的ですか?
ModelObj.findById(IdValue).exec(callback);
ModelObj.findOne({ '_id': IdValue}).exec(callback);
ModelObj.findById() は効率的だと思いますが、それを支持する理由や効率性について教えてください。
findById
findOne
表示する呼び出しとまったく同じことを行う便利な関数です。
ソースは次のとおりです。
Model.findById = function findById (id, fields, options, callback) {
return this.findOne({ _id: id }, fields, options, callback);
};
.findOneを使用すると、データベースはレコードを調べて各bsonドキュメントをチェックし、関連する変数を見つけてから値をチェックします。mongoが内部的にインデックス付けされた_idフィールドを探していることがわかっている場合は、各ドキュメントを調べる必要はありません。