using ensureIndex in mongodb schema using mongoose using ensureIndex in mongodb schema using mongoose mongoose mongoose

using ensureIndex in mongodb schema using mongoose


You don't call ensureIndex directly, you indicate that field should be indexed in your schema like this:

var schema = mongoose.Schema({  projectName : String,  authorName : { type: String, index: true }});

Based on that definition, Mongoose will call ensureIndex for you when you register the model via the mongoose.model call.

To see the ensureIndex calls that Mongoose is making, enable debug output by adding the following to your code:

mongoose.set('debug', true);


You could use this statement:

mongoose.connection.collections['my_collection'].ensureIndex({ "key": 1 }, { "unique": true }, callback);

For example you want to do some integration tests, so you will need to drop your collections rapidly.In that case mongoose doesn't setup indexes again during runtime even if option autoIndex is set to true.This answer could be useful in that case.


you can call Schema#index method to create index

let urlSchema = new Schema({    url: String,    status: Number  });urlSchema.index({ url: 1 }, { unique: true, background: true, dropDups: true });

you can listen createing index event.

let UrlModel = mongoose.model('url', urlSchema);UrlModel.on('index', function(error) {  if (error && error.message) {    console.log(`Url collection create index error:${error.message}`);  }});

Note: the process of creating index is asynchronous.so when you create unique index,you cannot insert duplicate data. or creating index will fail;