sql >> Databasteknik >  >> NoSQL >> MongoDB

Segelsjs. Bästa sättet att skapa (och hantera) index på sails-mongo (mongodb)

Eftersom du inte får köra 'migrate:alter' i produktionen (även om du försöker), är ett alternativ att skapa dessa index i bootstrap-filen ('config/bootstrap.js').

Föreställ dig att du har en användarmodell så här:

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

module.exports = User;

Sedan kan du manuellt skapa de saknade indexen så här i bootstrap-filen:

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();
};

Indexet skapas bara en gång, efterföljande körningar kommer inte att återskapa dessa index. ensureIndex var ett alias för createIndex-funktionen och den har fasats ut.

Referenser:

Referens för vattenlinjehanterare

MongoDB skapa indexreferens



  1. MongoDB i Go med mgo, operatorer med bson.M / bson.D fick alltid syntaxfel

  2. Prestanda för Redis vs Disk i cacheapplikation

  3. Hitta dokument med arrayer som inte innehåller ett dokument med ett visst fältvärde i MongoDB

  4. Om MongoDB, varför använder vi det? MongoDB:s terminologi och implementering