赞
踩
本菜鸡在做项目时,使用 MongoDB 数据库时遇到了一个问题,这个问题是这样的:对数据进行排序后并进行分页,发现可能在第一页中查询到的数据,在第二页的查询中会再次出现,第一页跟第二页会查询到一条一摸一样的数据,包括主键,真是见了鬼了!
菜鸡苦思冥想了一天,还是想不出个之所以然道理出来,最终没办法,只好去请教大神。
我:为啥呢?
大神:(苦思后)你排序所用的字段,是否能保证唯一性呢?
我:啊这,(看了下代码),不能诶
大神:呵呵
我:。。。。
其实,这个问题的根源在于我们排序所用的字段不能确保唯一性,因此,数据库每次排序的结果并不能保证是一样的。举个例子,我们有 A,B,C 三条数据,我们对其做一个排序,这三条数据用于排序的字段的值是相同的,所以,数据库每次对它进行排序之后,得到的结果可能是 A,C,B,也有可能是 A,B,C,这都是说不准的。
当我们对排序后的数据进行分页之后,我们要取第一页的数据(我们假设每一页只取一条数据),数据库进行排序后得到的结果是 A,C,B,显然我们取得了 A;然后我们要取第二页的数据,这次数据库排序之后的数据是 C,A,B,好家伙,这次查询出来的还是 A!这就是我们问题的根源。
解决这个问题也很简单,只需要保证我们排序字段的唯一性即可,至于如何保证,那就见仁见智了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。