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

时间:2015-04-08 18:59:35

标签: java mongodb morphia

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

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

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

通常在MongoDB中,您不会使用自动增量模式,因为它不会扩展到具有大量文档的数据库。但是,可以通过使用单独的计数器集合来跟踪最后使用的数字序列来执行此操作:

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

然后,您可以创建一个函数,该函数将返回序列中的下一个数字:

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