MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie füge ich der vorhandenen Sammlung in mongodb/node.js ein automatisches Inkrement hinzu?

MongoDB hat keine eingebaute Auto-Increment-Funktionalität.

Erstellen Sie eine neue Sammlung, um den letzten zum Einfügen verwendeten Sequenzwert zu verfolgen:

db.createCollection("counter")

Es enthält nur einen Datensatz als:

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

Erstellen Sie eine JavaScript-Funktion als:

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

Um alle bereits vorhandenen Werte in Ihrer vorhandenen Sammlung zu aktualisieren, sollte dies funktionieren (Für das leere {} können Sie Ihre Bedingungen eingeben, wenn Sie nur einige Dokumente aktualisieren möchten):

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

Jetzt können Sie neue Datensätze in Ihre bestehende Sammlung einfügen als:

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