MongoDB 是否提供了一种生成顺序值的方法?

Does MongoDB provide a way to generate sequential values?

我正在 Java 开发 Web 应用程序并使用 Morphia 在 MongoDB 上存储一些数据。
除了 ObjectId,我还需要为集合中的每个文档保留一个顺序值。此顺序值在集合中必须是唯一的。

我的第一个方法是创建一个集合来仅存储顺序值并同步获取和递增该值的方法。

有什么更好的方法吗?

通常在 MongoDB 中,您不会使用自动递增模式,因为它无法针对包含大量文档的数据库进行扩展。但是,可以通过使用单独的计数器集合来跟踪最后使用的数字序列来做到这一点:

db.counters.insert(
  {
     _id: "userid",
      seq: 0
   }
  )

然后您可以创建一个函数,它将 return 您得到序列中的下一个数字:

function getNextSequence(name) {
  var ret = db.counters.findAndModify(
         {
           query: { _id: name },
           update: { $inc: { seq: 1 } },
           new: true
         }
  );