mongodb-按顺序计算缺失索引的最有效方法

时间:2019-03-05 15:10:28

标签: node.js mongodb mongoose aggregation-framework

给出一个假设有1.000.000项的集合,每个项都有自己的唯一属性,即被编号的index。如何有效地找到数字序列中的最小间隙。

一个简单的示例是一个索引序列,例如:1,2,3,4,6,7,10,在这里我想找回数字5,因为这将是序列中最小的缺失数字。

是否有可能不需要查询所有数字的方法(也许是聚合)。

1 个答案:

答案 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;
}