MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como você implementa um ID primário de incremento automático no MongoDB?


Você precisará usar o comando findAndModify do MongoDB. Com ele, você pode selecionar e incrementar atomicamente um campo.
db.seq.findAndModify({
  query: {"_id": "users"},
  update: {$inc: {"seq":1}},
  new: true
});

Isso incrementará um contador para os users coleção, que você pode adicionar ao documento antes da inserção. Como é atômico, você não precisa se preocupar com condições de corrida resultando em IDs conflitantes.

Não é tão perfeito quanto o auto_increment do MySQL sinalizador, mas você também geralmente tem a opção de especificar sua própria fábrica de IDs em seu driver Mongo, então você pode implementar uma fábrica que usa findAndModify para incrementar e retornar IDs de forma transparente, resultando em uma experiência muito mais parecida com o MySQL.

A desvantagem dessa abordagem é que, como cada inserção depende de um bloqueio de gravação em sua coleção de sequências, se você estiver fazendo muitas gravações, poderá acabar estrangulando isso rapidamente. Se você deseja apenas garantir que os documentos em uma coleção sejam classificados na ordem de inserção, consulte Coleções limitadas.