MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come aggiungere l'incremento automatico alla raccolta esistente in mongodb/node.js?

MongoDB non ha una funzionalità di incremento automatico integrata.

Crea una nuova raccolta per tenere traccia dell'ultimo valore di sequenza utilizzato per l'inserimento:

db.createCollection("counter")

Conterrà un solo record come:

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

Crea una funzione JavaScript come:

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;
}

Per aggiornare tutti i valori già esistenti nella tua collezione esistente, questo dovrebbe funzionare (per il vuoto {}, puoi inserire le tue condizioni se vuoi aggiornare solo alcuni documenti):

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

Ora puoi inserire nuovi record nella tua raccolta esistente come:

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