sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo puedo incrementar automáticamente un campo en mongodb usando código Java?

MongoDB crea automáticamente una identificación para cada objeto insertado en él. No necesita crear su propia identificación.

Si necesita una identificación de entero incremental, se encontrará con todo tipo de problemas de sincronización distribuida; en realidad, es bastante difícil hacerlo bien en casos no triviales.

Para generar una identificación única, la forma más sencilla que se me ocurre:

  • poner un índice en la columna id con una restricción única.
  • para insertar una consulta de documento en el índice para el número más alto, agregue 1, utilícelo como id.
  • si la inserción falla debido a un reintento de índice duplicado

Implica algunos viajes de ida y vuelta, pero debe ser robusto y con el índice bastante rápido.

Si solo tiene una ubicación escribiendo esto, puede cobrar la identificación en un AtomicInteger localmente y solo hacer el proceso de ida y vuelta completo si detecta una colisión y luego actualizar el AtomicInteger.