Mongoose中的Model.findOne()和Model.findById()有什么区别?
考虑我们正在根据_id值从MongoDB中search一个文档。 以下哪个代码是有效的?
-
ModelObj.findById(IdValue).exec(callback);
-
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字段,它不必查看每个文档