Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java代码在mongodb中自动递增字段?_Java_Mongodb - Fatal编程技术网

如何使用java代码在mongodb中自动递增字段?

如何使用java代码在mongodb中自动递增字段?,java,mongodb,Java,Mongodb,我有一个带有字段“commentId”的comments表。我在这个字段上创建了一个索引。 我不知道如何插入一个新文档,在插入每个新文档时,commentId字段应该自动递增。有什么方法可以实现这一点吗?MongoDB会自动为插入其中的每个对象创建一个id。您不需要创建自己的id 如果您确实需要一个递增的整数id,那么您会遇到各种分布式同步问题——对于非平凡的情况,实际上很难找到正确的方法 要以我能想到的最简单方式生成唯一id: 在id列上放置具有唯一约束的索引 若要在索引上插入文档查询以查找

我有一个带有字段“commentId”的comments表。我在这个字段上创建了一个索引。
我不知道如何插入一个新文档,在插入每个新文档时,commentId字段应该自动递增。有什么方法可以实现这一点吗?

MongoDB会自动为插入其中的每个对象创建一个id。您不需要创建自己的id

如果您确实需要一个递增的整数id,那么您会遇到各种分布式同步问题——对于非平凡的情况,实际上很难找到正确的方法

要以我能想到的最简单方式生成唯一id:

  • 在id列上放置具有唯一约束的索引
  • 若要在索引上插入文档查询以查找最大的数字,请添加1,并将其用作id
  • 如果由于重复索引而导致插入失败,请重试
它涉及到一些往返,但应该是稳健的,并且索引很快到位


如果只有一个位置写入这些值,则可以在AtomicInteger中本地兑现id,并且只有在检测到冲突时才执行完整的往返过程,然后更新AtomicInteger。

检索最大值并添加+1,或者使该列成为一个表达式,增加其自身检索最大值并增加它需要更多的行代码。没有它有什么办法吗?我没有得到你的第二个建议。你能详细说明一下吗?这里记录了你能得到的最接近的信息:注意警告。@SachinVerma SQL与NoSql DB MongoDb有什么关系?我知道Tim,但我的实现需要一个唯一的ID,而不是mongo生成的对象ID。这就是为什么我们有索引的概念。但我没有找到任何解决方案。但是,如果每秒有许多插入,会怎么样?您可能会出现很多错误,并导致性能下降。使用另一个集合来存储序列是一个更好的选择(请参阅本问题评论中的@wiredparie链接)。