sql >> Database >  >> NoSQL >> MongoDB

Wanneer moet u de MongoDB-databaseverbinding in Nodejs sluiten

Hier is een mogelijke oplossing op basis van de telbenadering (ik heb het niet getest en er is geen foutopsporing, maar het zou het idee moeten overbrengen).

De basisstrategie is:verkrijg de telling van het aantal records dat moet worden bijgewerkt, sla elke record asynchroon op en een callback bij succes, waardoor de telling wordt verlaagd en de database wordt gesloten als de telling 0 bereikt (wanneer de laatste update is voltooid). Door {safe:true} . te gebruiken we kunnen ervoor zorgen dat elke update succesvol is.

De mongo-server gebruikt één thread per verbinding, dus het is goed om ofwel a) ongebruikte verbindingen te sluiten, of b) ze te poolen/hergebruiken.

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. Inleiding tot MongoDB-gegevenstypen

  2. Snelste manier om een ​​numpy-array op te slaan in redis

  3. Welke MongoDB-gebruikersrechten heb ik nodig om een ​​gebruiker toe te voegen aan een nieuwe/andere mongo-database?

  4. MongoDB $abs