代码之家  ›  专栏  ›  技术社区  ›  sami_analyst

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

  •  1
  • sami_analyst  · 技术社区  · 7 年前

    给定一个集合,其中有1.000.000个条目,每个条目都有自己的惟一属性,称为number,该属性被索引。我怎样才能有效地找到数字序列中的最小间隙。

    一个简单的例子是一个索引序列,比如:1,2,3,4,6,7,10,在这里我想取回数字5,因为这是序列中丢失的最少的数字。

    有没有一种不需要查询所有数字的方法(可能是聚合)。

    0 回复  |  直到 7 年前
        1
  •  0
  •   klhr    7 年前

    一种方法是 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;
    }