sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur lägger man till automatisk inkrement till befintlig samling i mongodb/node.js?

MongoDB har ingen inbyggd funktion för automatisk inkrementering.

Skapa en ny samling för att hålla reda på det senaste sekvensvärdet som användes för infogning:

db.createCollection("counter")

Det kommer bara att innehålla en post som:

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

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

För att uppdatera alla redan befintliga värden i din befintliga samling bör detta fungera (För den tomma {} kan du placera dina villkor om du bara vill uppdatera vissa dokument):

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

Nu kan du infoga nya poster i din befintliga samling som:

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


  1. Hur säger man till Mongo att sortera en samling innan man begränsar resultaten?

  2. Hur implementerar man en ström av futures för ett blockerande samtal med futures.rs och Redis PubSub?

  3. MongoDB samlad fråga med PHP-drivrutin

  4. Kan inte använda mongo-kommandot, visar kommandot som inte finns på mac