给出一个假设有1.000.000项的集合,每个项都有自己的唯一属性,即被编号的index。如何有效地找到数字序列中的最小间隙。
一个简单的示例是一个索引序列,例如:1,2,3,4,6,7,10,在这里我想找回数字5,因为这将是序列中最小的缺失数字。
是否有可能不需要查询所有数字的方法(也许是聚合)。
答案 0 :(得分:0)
一种方法是使用cursor。使用光标,您可以手动遍历文档,直到找到符合条件的文档。
var cursor = db.coll.find({}).sort({number: 1});
var prev = null
while (cusor.hasNext()) {
var curr = cursor.getNext()
if (prev && prev.number + 1 !== curr.number) break;
prev = curr;
}