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

Node.jsMongodb-ネイティブドライバー接続の共有

    これをすべてうまくまとめたライブラリを作成できます。つまり、データベースへの接続が1つだけ開かれ、2番目の要求に対して同じ(開いた)接続が返されます。1秒あたり1000以上を取得している場合、これは次のようになります。メイクまたはブレークの問題(つまり、リクエストごとに接続を再開しない)...

    users.js

    var connections = require('./connections.js');
    
    var serverCache = connections('127.0.0.1', 27017); 
    
    module.exports = {
      create: function(newData, callback){
        serverCache('main', 'users', function(e, collection){
          collection.insert(newData, callback);
        })
      }
    }
    

    connections.js

    var mongo = require('mongodb');
    
    // a mongo connection cache
    // pass in host & port
    // it returns a function accepting dbName, collectionName & callback
    var mongoCache = function(host, port){
    
      // keep our open connections
      var mongoDatabases = {};
    
      var ensureDatabase = function(dbName, readyCallback){
        // check if we already have this db connection open
        if(mongoDatabases[dbName]){
          readyCallback(null, mongoDatabases[dbName]);
          return;
        }
    
        // get the connection
        var server = new mongo.Server(host, port, {auto_reconnect: true});
    
        // get a handle on the database
        var db = new mongo.Db(dbName, server);
        db.open(function(error, databaseConnection){
          if(error) throw error;
    
          // add the database to the cache
          mongoDatabases[dbName] = databaseConnection;
    
          // remove the database from the cache if it closes
          databaseConnection.on('close', function(){
            delete(mongoDatabases[dbName]);
          })
    
          // return the database connection
          readyCallback(error, databaseConnection);
        })
      }
    
      var ensureCollection = function(dbName, collectionName, readyCallback){
    
        ensureDatabase(dbName, function(error, databaseConnection){
          if(error) throw error;
    
          databaseConnection.createCollection(collectionName, function(error, collection) {
            if(error) throw error;
    
            // return the collection finally
            readyCallback(error, collection);
          })
    
        })
      }
    
      return ensureCollection;
    }
    
    module.exports = mongoCache;
    


    1. $ first in mongodb

    2. Spring mongodbは、保存後に挿入されたアイテムのIDを取得します

    3. GoogleCloudPlatform-mongodbに接続できません

    4. MongoDB $ month