最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Mongoose findOne() vs limit(1)

网站源码admin34浏览0评论

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/

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论