35

_id 値に基づいて MongoDB からドキュメントを検索しているとします。次のコードのどれが効率的ですか?

  1. ModelObj.findById(IdValue).exec(callback);

  2. ModelObj.findOne({ '_id': IdValue}).exec(callback);

ModelObj.findById() は効率的だと思いますが、それを支持する理由や効率性について教えてください。

4

4 に答える 4

54

findByIdfindOne表示する呼び出しとまったく同じことを行う便利な関数です。

ソースは次のとおりです。

Model.findById = function findById (id, fields, options, callback) {
  return this.findOne({ _id: id }, fields, options, callback);
};
于 2013-01-10T14:21:41.250 に答える
-3

.findOneを使用すると、データベースはレコードを調べて各bsonドキュメントをチェックし、関連する変数を見つけてから値をチェックします。mongoが内部的にインデックス付けされた_idフィールドを探していることがわかっている場合は、各ドキュメントを調べる必要はありません。

于 2013-01-10T10:30:30.547 に答える