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

Sailsjs。帆のインデックスを作成(および管理)するための最良の方法-mongo(mongodb)

    本番環境では「migrate:alter」を実行することは許可されていないため(試行しても)、1つのオプションは、ブートストラップファイル(「config / bootstrap.js」)にこれらのインデックスを作成することです。

    次のようなユーザーモデルがあるとします。

    var User = {
      attributes: {
        email     : { type: 'string', unique: true, required: true },
        username  : { type: 'string', unique: true, required: true },
        pin: { type: 'string'}
      }
    };
    
    module.exports = User;
    

    次に、ブートストラップファイルに次のように欠落しているインデックスを手動で作成できます。

    module.exports.bootstrap = async function(done) {
      console.log("Loading bootstrap...")
    
      if (process.env.NODE_ENV === 'test') {
    
      }
    
      if (process.env.NODE_ENV === 'production') {
          console.log("CREATING DATABASE INDEX BY HAND")
    
          // USER MODEL
          var db = User.getDatastore().manager;
          await db.collection(User.tableName).createIndex( { email: 1 }, {unique: true} );
          await db.collection(User.tableName).createIndex( { username: 1 }, {unique: true} );
          // PANDA MODEL
          // db = Panda.getDatastore().manager;
          // await db.collection(Panda.tableName).createIndex( { name: 1 }, {unique: true} );
      }
    
      // await initializeDatabase() // custom DB initialization...
    
      return done();
    };
    

    インデックスは1回だけ作成され、それ以降の実行ではそれらのインデックスは再作成されません。 ensureIndex createIndex関数のエイリアスであり、非推奨になりました。

    参照:

    喫水線マネージャーのリファレンス

    MongoDB作成インデックス参照



    1. マングースの場所、mongoDB

    2. 投票のためのMongoデータモデリング/更新(上下)

    3. Redisで参照セットを実装する

    4. Pymongo BSONバイナリの保存と取得?