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

Node.jsとMongoDB、DBオブジェクトを再利用

    データベース接続を初期化し、プログラム全体でアクセスできるようにするモジュールをいつでも作成できます。例:

    mongo.js

    var mongodb = require('mongodb');
    
    module.exports.init = function (callback) {
      var server = new mongodb.Server("127.0.0.1", 27017, {});
      new mongodb.Db('test', server, {w: 1}).open(function (error, client) {
        //export the client and maybe some collections as a shortcut
        module.exports.client = client;
        module.exports.myCollection = new mongodb.Collection(client, 'myCollection');
        callback(error);
      });
    };
    

    app.js

    var mongo = require('./mongo.js');
    
    //setup express...
    
    //initialize the db connection
    mongo.init(function (error) {
        if (error)
            throw error;
    
        app.listen(80); //database is initialized, ready to listen for connections
    });
    

    randomFile.js

    var mongo = require('./mongo.js');
    
    module.exports.doInsert = function () {
      //use the collection object exported by mongo.js
      mongo.myCollection.insert({test: 'obj'}, {safe:true}, function(err, objects) {
        if (err)
            console.warn(err.message);
      });
    };
    

    人々がプーリングについて話していることは知っていますが、すべてのリクエストに対してmongo接続のプーリングと単一の接続のベンチマークを行った場合、実際には単一の接続の方がパフォーマンスが向上しました。確かに、これは約1年前のことですが、基本的な考え方が変わったとは思えません。すべてのリクエストは非同期であるため、同時にリクエストを行うために複数の接続が必要になるわけではありません。

    MongoClientに関しては、それが彼らが奨励している新しい構文だと思います。いずれにせよ、それは本質的にクライアントです 使用するスタイルに関係なく、保持してアクセスできるようにするオブジェクト。



    1. 埋め込まれたドキュメントのmongodb制限

    2. クエリが単純でインデックスに合わせられているにもかかわらず、MongoDBクエリが不当に遅い

    3. PHP用のMongoDBコネクタ:ページ付けのためにドキュメントをカウントします

    4. 配列更新演算子$[<identifier>]を使用した次のクエリに相当するMongoDBC#ドライバーは何でしょうか。