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

Como adicionar incremento automático à coleção existente em mongodb/node.js?


O MongoDB não possui uma funcionalidade de incremento automático embutida.

Crie uma nova coleção para acompanhar o último valor de sequência usado para inserção:
db.createCollection("counter")

Ele terá apenas um registro como:
db.counter.insert({_id:"mySequence",seq_val:0})

Crie uma função JavaScript como:
function getNextSequenceVal(seq_id){
   // find record with id seq_id and update the seq_val by +1
   var sequenceDoc = db.counter.findAndModify({
      query:{_id: seq_id},
      update: {$inc:{seq_val:1}},
      new:true
   });

   return sequenceDoc.seq_val;
}

Para atualizar todos os valores já existentes em sua coleção existente, isso deve funcionar (para o {} vazio, você pode colocar suas condições se quiser atualizar apenas alguns documentos):
db.myCollection.update({},
   {$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})

Agora você pode inserir novos registros em sua coleção existente como:
db.myCollection.insert({
   "_id":getNextSequenceVal("mySequence"),
   "name":"ABC"
})