MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak dodać auto inkrementację do istniejącej kolekcji w mongodb/node.js?

MongoDB nie ma wbudowanej funkcji automatycznego przyrostu.

Utwórz nową kolekcję, aby śledzić ostatnią wartość sekwencji użytą do wstawienia:

db.createCollection("counter")

Będzie posiadać tylko jeden rekord jako:

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

Utwórz funkcję JavaScript jako:

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

Aby zaktualizować wszystkie już istniejące wartości w istniejącej kolekcji, powinno to zadziałać (Dla pustego {} możesz umieścić swoje warunki, jeśli chcesz zaktualizować tylko niektóre dokumenty):

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

Teraz możesz wstawiać nowe rekordy do istniejącej kolekcji jako:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak znaleźć podobieństwo w polu dokumentu MongoDB?

  2. Wbudowany dokument MongoDB nie otrzymuje identyfikatora podczas zapisywania za pomocą sterownika C#

  3. MongoDB:Jak zdefiniować schemat?

  4. Sortowanie warunkowe Mongodb

  5. Bitwa o bazy danych NoSQL — porównanie funkcji NoSQL MongoDB i MSSQL