sql >> データベース >  >> NoSQL >> MongoDB

NodejsでMongoDBデータベース接続を閉じるタイミング

    これがカウントアプローチに基づく潜在的な解決策です(私はそれをテストしておらず、エラートラップはありませんが、アイデアを伝える必要があります)。

    基本的な戦略は次のとおりです。更新する必要のあるレコード数のカウントを取得し、各レコードを非同期で保存し、成功時にコールバックします。これにより、カウントがデクリメントされ、カウントが0に達した場合(最後の更新が終了したとき)にDBが閉じられます。 {safe:true}を使用する 各更新が成功することを保証できます。

    mongoサーバーは接続ごとに1つのスレッドを使用するため、a)未使用の接続を閉じるか、b)それらをプール/再利用することをお勧めします。

    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のドキュメントを更新する

    2. Mongooseを使用してインデックスを削除するための推奨される方法は何ですか?

    3. サーバー側でのJSONオブジェクトのキャッシュ

    4. mongodbでaggregrateを使用して$match_idにする方法