sql >> Database >  >> NoSQL >> MongoDB

Hoe voeg je automatische verhoging toe aan de bestaande verzameling in mongodb/node.js?

MongoDB heeft geen ingebouwde functie voor automatisch verhogen.

Maak een nieuwe verzameling om de laatste reekswaarde bij te houden die is gebruikt voor invoeging:

db.createCollection("counter")

Het zal slechts één record bevatten als:

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

Maak een JavaScript-functie 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;
}

Om alle reeds bestaande waarden in uw bestaande verzameling bij te werken, zou dit moeten werken (Voor de lege {} kunt u uw voorwaarden plaatsen als u slechts enkele documenten wilt bijwerken):

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

Nu kunt u nieuwe records in uw bestaande verzameling invoegen als:

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


  1. Meteorpublicatie:bepaalde velden in een arraydocumentveld verbergen?

  2. SQL versus NoSQL voor een voorraadbeheersysteem

  3. Hoe een lijst in een structuur in Redis nesten om het topniveau te verlagen?

  4. MongoDB lijst beschikbare databases in java