如何使用java代码在mongodb中自动递增字段?
我有一个带有字段“commentId”的comments表。我在这个字段上创建了一个索引。如何使用java代码在mongodb中自动递增字段?,java,mongodb,Java,Mongodb,我有一个带有字段“commentId”的comments表。我在这个字段上创建了一个索引。 我不知道如何插入一个新文档,在插入每个新文档时,commentId字段应该自动递增。有什么方法可以实现这一点吗?MongoDB会自动为插入其中的每个对象创建一个id。您不需要创建自己的id 如果您确实需要一个递增的整数id,那么您会遇到各种分布式同步问题——对于非平凡的情况,实际上很难找到正确的方法 要以我能想到的最简单方式生成唯一id: 在id列上放置具有唯一约束的索引 若要在索引上插入文档查询以查找
我不知道如何插入一个新文档,在插入每个新文档时,commentId字段应该自动递增。有什么方法可以实现这一点吗?MongoDB会自动为插入其中的每个对象创建一个id。您不需要创建自己的id 如果您确实需要一个递增的整数id,那么您会遇到各种分布式同步问题——对于非平凡的情况,实际上很难找到正确的方法 要以我能想到的最简单方式生成唯一id:
- 在id列上放置具有唯一约束的索引
- 若要在索引上插入文档查询以查找最大的数字,请添加1,并将其用作id
- 如果由于重复索引而导致插入失败,请重试
如果只有一个位置写入这些值,则可以在AtomicInteger中本地兑现id,并且只有在检测到冲突时才执行完整的往返过程,然后更新AtomicInteger。检索最大值并添加+1,或者使该列成为一个表达式,增加其自身检索最大值并增加它需要更多的行代码。没有它有什么办法吗?我没有得到你的第二个建议。你能详细说明一下吗?这里记录了你能得到的最接近的信息:注意警告。@SachinVerma SQL与NoSql DB MongoDb有什么关系?我知道Tim,但我的实现需要一个唯一的ID,而不是mongo生成的对象ID。这就是为什么我们有索引的概念。但我没有找到任何解决方案。但是,如果每秒有许多插入,会怎么样?您可能会出现很多错误,并导致性能下降。使用另一个集合来存储序列是一个更好的选择(请参阅本问题评论中的@wiredparie链接)。