MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment ajouter une incrémentation automatique à une collection existante dans mongodb/node.js ?

MongoDB n'a pas de fonctionnalité d'auto-incrémentation intégrée.

Créez une nouvelle collection pour garder une trace de la dernière valeur de séquence utilisée pour l'insertion :

db.createCollection("counter")

Il ne contiendra qu'un seul enregistrement en tant que :

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

Créez une fonction JavaScript en tant que :

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

Pour mettre à jour toutes les valeurs déjà existantes dans votre collection existante, cela devrait fonctionner (Pour les {} vides, vous pouvez placer vos conditions si vous souhaitez mettre à jour certains documents uniquement) :

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

Vous pouvez désormais insérer de nouveaux enregistrements dans votre collection existante en tant que :

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