MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Кога да затворите връзката с базата данни MongoDB в Nodejs

Ето едно потенциално решение, базирано на подхода за броене (не съм го тествал и няма прихващане на грешки, но трябва да предаде идеята).

Основната стратегия е:Придобиване на броя на записите, които трябва да бъдат актуализирани, запазване на всеки запис асинхронно и обратно извикване при успех, което ще намали броя и ще затвори DB, ако броят достигне 0 (когато завърши последната актуализация). С помощта на {safe:true} можем да гарантираме, че всяка актуализация е успешна.

Сървърът mongo ще използва една нишка на връзка, така че е добре или а) да затворите неизползваните връзки, или б) да ги обедините/използвате повторно.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Местоположение в mongoose, mongoDB

  2. MongoDB:Възникна изчакване след 30 000 ms избор на сървър с помощта на CompositeServerSelector

  3. UnhandledPromiseRejectionWarning:MongooseServerSelectionError

  4. Асоциация „Много към много“ на MongoDB

  5. най-добрата практика на обединяването на django + PyMongo?