MongoDB自动增长机制详解,分享数据主键自增实现技巧
MongoDB没有内置的主键自增功能,但可以通过创建单独的计数集合并结合原子操作来实现自动增长,确保每次获取唯一的递增值。
为什么需要主键自增
在开发中,有时我们希望像传统关系型数据库那样,让主键自动增长,比如用户ID、订单号等。虽然MongoDB的默认主键`_id`已经是唯一的,但它是一个复杂的对象,不便于阅读和记忆。自增的数字主键更直观,也更容易和其他系统集成。
实现方法一:使用计数集合
最简单的方法就是创建一个专门用来计数的集合。比如,我们创建一个叫`counters`的集合,里面存放每个需要自增的集合的当前值。每当要向目标集合插入新文档时,先去`counters`集合里找到对应的计数器,把它的值加1,然后用这个新值作为新文档的主键。
具体操作时,可以用`findAndModify`命令,它能原子性地查找并修改文档,确保在多线程或多进程环境下也不会出现重复值。例如,为用户集合`users`生成自增ID,先在`counters`集合中准备一个文档,记录`users`的当前值,比如`{