【问题标题】:How can I query a mongo database to start at a certain index to another certain index without skip?如何查询 mongo 数据库以从某个索引开始到另一个特定索引而不跳过?
【发布时间】:2017-08-17 04:32:24
【问题描述】:

例如:如果我有 25 条记录的集合。我想使用db.collection.find(indexOf[14]).limit(4) 之类的东西,我认为这是不可能的,但基本上我想说的是,在 mongo 查询中从这一点开始,然后找到我的下一个 n 记录。

indexOf 可能不是最好的例子,但基本上我想开始搜索某个索引并找到下一个n 记录并返回那些。

我知道您可以使用 .skip() 方法,但正如他们在文档中所说,使用该方法对 CPU 不利。所以我不想在这里使用它。

【问题讨论】:

    标签: javascript mongodb


    【解决方案1】:

    我建议您改变主意并考虑使用$skip。除非您的分页功能对您的系统来说非常重要,以至于用户会一直使用它,并且除非您要处理大量的客户或文档,否则$skip 不太可能给您带来严重的麻烦。

    如果您真的担心该主题,请运行基准测试并查看您的 CPU/响应时间。

    还可以在这里查看回复:Slow pagination over tons of records in mongodb

    【讨论】:

      【解决方案2】:

      据此:https://scalegrid.io/blog/fast-paging-with-mongodb/

      你会使用类似于你的例子的东西:

      users = db.users.find({'_id'> last_id}).limit(10);
      

      这是你尝试过的吗?

      【讨论】:

      • 这里的问题是我的 id 是完全随机的。还有很长的字符串。
      • 我明白了。当您说您不想使用 .skip() 因为它对 CPU 不利时,您要翻页的数据有多大?它是一个巨大的结果集吗?通常您不会向用户返回包含数千个结果的列表吗?关于 .skip() 占用大量 CPU 的警告可能不是问题。
      • 这是一个大公司的项目,有几千甚至几十万。
      猜你喜欢
      • 2021-08-26
      • 1970-01-01
      • 2017-09-30
      • 2018-06-22
      • 2017-04-24
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多