【问题标题】:What is the difference between dB queries offset and skipdB查询偏移和跳过有什么区别
【发布时间】:2016-06-15 17:41:01
【问题描述】:

我目前正在使用 mongodb 作为大型 Rails 应用程序的数据库。dB 查询跳过和偏移有什么区别

【问题讨论】:

    标签: mongodb mongoid mongodb-query


    【解决方案1】:

    当您想要使用分页结果时,Mongodb 提供了两种批处理方法。首先是 skip,您通常将其称为 cursor.skip(n),其中 n 告诉它跳过 n 个文档。

    例如db.collection.find().skip(4) // 跳过 4 个文档

    另一种方法是使用 limit 将输出严格限制为您提供的数字。

    例如db.collection.find().limit(10) // 将输出限制为 10 个文档

    如果您想有效地使用批处理操作,请连续使用两者:

    db.collection.find().skip(10).limit(10)

    通过这种方式,您可以通过跳过包含 10 个文档的页面来实现分页,同时将输出限制为 10 个文档。

    【讨论】:

    • 由于 mongoid 文档建议使用 skip 可能很昂贵。
    【解决方案2】:

    根据 pymongo 在 freenode 上的 irc 频道 #mongoengine 没有区别。事实上我在 mongoid 文档中找不到这种叫做偏移量的东西。也应该尽可能避免跳过。当你“跳过”结果时,它仍然需要计算它们以跳过它们。这是浪费的,并且页数越高,log n 的性能就会越高(因为需要遍历所有匹配记录的完整索引)。使用 $gt 查询来匹配“已经看到的所有内容”允许 MongoDB 正确使用索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多