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

¿Cómo se implementa una ID principal de incremento automático en MongoDB?

Deberá usar el comando findAndModify de MongoDB. Con él, puede seleccionar e incrementar atómicamente un campo.

db.seq.findAndModify({
  query: {"_id": "users"},
  update: {$inc: {"seq":1}},
  new: true
});

Esto incrementará un contador para los users colección, que luego puede agregar al documento antes de la inserción. Dado que es atómico, no tiene que preocuparse por las condiciones de carrera que generan ID en conflicto.

No es tan fluido como el auto_increment de MySQL flag, pero generalmente también tiene la opción de especificar su propia fábrica de ID en su controlador Mongo, por lo que podría implementar una fábrica que use findAndModify para incrementar y devolver ID de forma transparente, lo que resulta en una experiencia mucho más similar a MySQL.

La desventaja de este enfoque es que, dado que cada inserción depende de un bloqueo de escritura en su colección de secuencias, si está haciendo muchas escrituras, podría terminar con un cuello de botella con bastante rapidez. Si solo desea garantizar que los documentos de una colección se clasifiquen en orden de inserción, consulte Colecciones limitadas.