通过MongoDB实现寻呼的方法

MonDB的分页查询是通过三个功能组合的分页,限制(),(),跳过和排序()。

以下是我的测试数据

Db.test.find()()。排序({年龄:1 });



第一种方法

查询的数据在第一页:db.test.find()()。排序({年龄:1 })限制(2);



查询数据的第二页:db.test.find()。排序({年龄:1 })。跳过(2)限制(2);



用类推法核对其他页数。

第二方法

查询的数据在第一页:db.test.find()()。排序({年龄:1 })限制(2);



它和上面的第一个是一样的。

查询第二页数据:



这是第一页最后一条记录的值,然后将先前的记录排除在外,可以获得新记录。

总之,如果数据不是很高,可以使用第一种方法比较简单,毕竟,如果数据量足够大,第二种方法的使用比较好,因为这不会跳过(跳过)这个函数,跳过太多的记录,效率很低。

经过仔细考虑,第二种方法并不真正适合跳转页面,而且效率不是很高。

对于海量数据,我们必须做一些特殊处理。

有2种方法可以做。

第一种方法




限制页面的分页数量,页面处理类似百度的百度,700多条记录正好在显示器前面,所以不考虑性能问题,毕竟,大多数人只要翻到首页十,就会找到自己的需要。

应估计下列统计结果,并根据记录的比率估计记录总数。

第二方法

我们能做到这一点,假设根据ID,我们可以保存ID和数量的页数,ID位于redis / membercached,

像这样,假设每页有10条记录。

ID页面

十一

二十一



一百零一

一百一十二

一百二十二

对.

二百零二

因此,当我们查看第一页时,我们可以直接取出十个数据。

假设有1亿个数据块,一个记录id代表4个字节,另一个字节是一个字节,一个记录占用5字节。

100000000 * 5 /(1024×1024)= 476mb

这种方法使用空间来改变时间。一般来说,数据库查询时间主要用于数据库连接和缓存中,大大加快了查询速度。

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。