sql >> Databasteknik >  >> NoSQL >> MongoDB

När ska MongoDB-databasanslutning stängas i Nodejs

Här är en potentiell lösning baserad på räknemetoden (jag har inte testat det och det finns ingen felfällning, men det borde förmedla tanken).

Den grundläggande strategin är:Inhämta räkningen av hur många poster som behöver uppdateras, spara varje post asynkront och en återuppringning vid framgång, vilket kommer att minska antalet och stänga DB om räkningen når 0 (när den senaste uppdateringen är klar). Genom att använda {safe:true} vi kan säkerställa att varje uppdatering är framgångsrik.

Mongoservern kommer att använda en tråd per anslutning, så det är bra att antingen a) stänga oanvända anslutningar eller b) poola/återanvända dem.

db.open(function (err, db) {
  db.collection('foo', function (err, collection) {
    var cursor = collection.find({});
    cursor.count(function(err,count)){
      var savesPending = count;

      if(count == 0){
        db.close();
        return;
      }

      var saveFinished = function(){
        savesPending--;
        if(savesPending == 0){
          db.close();
        }
      }

      cursor.each(function (err, doc) {
        if (doc != null) {
          doc.newkey = 'foo'; // Make some changes
          db.save(doc, {safe:true}, saveFinished);
        }
      });
    })
  });
});


  1. MongoDB Datakatalog /data/db hittades inte

  2. Programmatisk uppdatering av fält i Mongo och Meteor

  3. Långsam paginering över massor av poster i mongodb

  4. Hur upprätthåller man främmande nycklar i NoSql-databaser (MongoDB)?