mongo中的序列 - 可以依赖于findAndModify()吗?

时间:2017-01-20 13:39:23

标签: java mongodb sequence

对于每秒调用约100次的操作,我需要一些持久性整数Id。我在Settings集合中有一个文档,其中id存储在lastId字段中。

根据mongodb doc我想使用带有findAnyModify()参数的update: { $inc: { lastId: 1 } }操作来实现它。我可以依赖每个下一个调用返回一个新的(递增的)数字吗?

或者使用java AtomicLong计数器作为解决方法更好吗?它将在开始时从mongo读取lastId,并且每次增量我将从mongo写入(但不读取)?

1 个答案:

答案 0 :(得分:1)

如果你需要mongodb中的持久化序列,你确实需要使用运算符$inc,以便在服务器端以原子方式递增你将用作计数器的给定字段。

如果您使用AtomicLong,则几乎无法保证序列的一致性(特别是在群集环境中),这样您可能会面临多个文档最终使用相同ID的情况。 / p>