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

¿Cómo agregar incremento automático a la colección existente en mongodb/node.js?

MongoDB no tiene una función de incremento automático incorporada.

Cree una nueva colección para realizar un seguimiento del último valor de secuencia utilizado para la inserción:

db.createCollection("counter")

Mantendrá solo un registro como:

db.counter.insert({_id:"mySequence",seq_val:0})

Cree una función de 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 actualizar todos los valores ya existentes en su colección existente, esto debería funcionar (para el {} vacío, puede colocar sus condiciones si desea actualizar solo algunos documentos):

db.myCollection.update({},
   {$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})

Ahora puede insertar nuevos registros en su colección existente como:

db.myCollection.insert({
   "_id":getNextSequenceVal("mySequence"),
   "name":"ABC"
})