Mongoose findOne() vs limit(1)"/>
Mongoose findOne() vs limit(1)
使用 MongoDB 和 Node.js 的 Mongoose 驱动程序,我想限制我必须在 API 中重复的代码量。
而不是做这样的事情:
var limit = req.query.limit || -1;
if(limit === 1){
Model.findOne({})...
}
else{
Model.find({})...
}
最好只是做:
var limit = req.query.limit || -1;
Model.find({}).limit(limit);
所以我有两个问题:
(1) 使用 limit(1) 是否与 findOne() 具有相同的效果,它是一种更有效的搜索,因为查询一旦找到第一个匹配项就会返回?
(2) limit(-1) 或 limit(0) 是否对搜索没有限制?因为这将使没有重复代码成为可能。
回答如下:limit(1) 与 findOne()
- find 返回游标,而 findOne 返回确切的文档。
- 使用 find() + limit() 更快,因为 findOne() 将始终读取并返回文档(如果存在)。
- find() 只返回一个游标(或不返回),并且只在遍历游标时读取数据。
- find() 有一个游标,因此您可以在 mongo shell 中将 explain() 与您的查询一起使用,以查看获胜计划和有关执行查询的其他详细信息
极限(-1),极限(0)
- limit() 值为 0(即 .limit(0))等同于设置无限制。
- 负限制类似于正限制,但在返回单批结果后关闭游标。
http://docs.mongodb/manual/reference/method/cursor.limit/
更多推荐
Mongoose findOne() vs limit(1)
发布评论