首页 > 解决方案 > Mongodb对象id和分页

问题描述

我不太了解周围的对象 id 比较和自然排序,特别是 -

由于每个对象 id 都大于前一个对象 id,但在同一秒内生成的 id 除外,在这种情况下无法保证哪个更大,相同范围的分页查询是否始终保证页面上的排序不会改变,假设没有那个页面上的文件被删除了?

从直觉上看,答案应该是“是”,因为每个新的 id 都会出现在后续页面上,但自然排序特别不能保证在所有条件下的顺序。

标签: mongodbpagination

解决方案


除了文档的更新和删除,还有第三种影响自然顺序的变化:文档的增长模式

当文档超出其初始空间分配时,它会被移动,从而修改自然顺序。这种情况甚至可能导致一个新的副作用:当插入一个新文档时,它可以存储在第一个文档留下的那个“洞”中。

因此,对于Normal Collection,您不能保证自然顺序保持不变。如果您需要依赖文档插入顺序,您应该考虑Capped Collections


推荐阅读