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

Hvordan tilføjer man automatisk stigning til eksisterende samling i mongodb/node.js?

MongoDB har ikke en indbygget auto-increment-funktionalitet.

Opret en ny samling for at holde styr på den sidste sekvensværdi, der blev brugt til indsættelse:

db.createCollection("counter")

Det vil kun indeholde én rekord som:

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

Opret en JavaScript-funktion som:

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

For at opdatere alle de allerede eksisterende værdier i din eksisterende samling, burde dette fungere (For den tomme {} kan du placere dine betingelser, hvis du kun vil opdatere nogle dokumenter):

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

Nu kan du indsætte nye poster i din eksisterende samling som:

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


  1. Hvordan opretter man en DB til MongoDB container ved opstart?

  2. hvordan kan jeg få sessioner til at fungere ved hjælp af redis, express &socket.io?

  3. Fjern matrixposter, der indeholder en tom matrix

  4. HBase-opgradering oven på Event Sourcing og CQRS-arkitektur på 3 uger