Mongoose中的Model.findOne()和Model.findById()有什么区别?

考虑我们正在根据_id值从MongoDB中search一个文档。 以下哪个代码是有效的?

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

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

我觉得ModelObj.findById()是有效的,但是支持的原因是什么或者效率如何?

findById只是一个方便的function,它和你显示的findOne调用完全一样。

这是来源 :

 Model.findById = function findById (id, fields, options, callback) { return this.findOne({ _id: id }, fields, options, callback); }; 

使用.findOne使数据库查看它的logging检查每个bson文档,find相关的variables,然后检查值,如果mongo知道它寻找内部索引的_id字段,它不必查看每个文档