
1 lbfeng 2020 年 3 月 1 日 |
2 a627795061 OP @lbfeng 老哥,你这个方案就是我说的 find 代替 skip,但前提是用 id 排序,但我的问题是不是 id 排序的情况下,而且排序字段的值有可能相等 |
3 Vegetable 2020 年 3 月 1 日 这个不是 mongodb 的问题,mysql 用 offset limit 在 offset 够大的时候一样要面对这个问题,这个逻辑本身没有通用的解决办法。你想知道某个排序条件下第 10000 个到 10010 个记录分别是谁,必须要先把前 9999 条记录都排出来。 从你的描述可以看出来你应该看过官方文档的分页实现建议了,如果你的业务模型足够清晰的话,也许有办法通过别的手段优化 skip 比较大时的性能,不过这个很多时候是没那么必要的,具体还是看你业务 |
4 a627795061 OP |
5 fmumu 2020 年 3 月 1 日 via Android 限制只能查前一万条记录 |
6 optional 2020 年 3 月 1 日 如果在意性能,那就把 [不唯一] 的字段 [变唯一] 。我这边的常用操作是,线上排序不允许多字段,如果有多字段预处理为单字段, 如果有重复问题,就把该字段拆为高低 2 个部分,高位为值,低位填充随机数。 |
7 huang7230468 2020 年 3 月 1 日 目前我们也是在用 mongo: 我们主要有以下措施: 1、条件,我们应该利用条件来尝试将尽可能的 documents 的数量减少; 2、如果是数据非常多,几百万、几千万,那么应该考虑集群分片; 3、重新审视目标 collection 的 Index,是否合理? 4、甚至可以考虑 SSD ; 最后,问下,你们目前大概是多少数据呀?如果说只有几万条,理论上讲应该不会有问题; |
8 itskingname 2020 年 3 月 2 日 MongoDB 自动生成的_id 是一个排序递增的字段,可以直接通过它来搜索和分页。记录上一次的_id,第二次搜索的时候大于_id 就好了。 |