简体   繁体   中英

How to drop index from mongodb schema using mongoose?

I'm trying to remove an index from my mongoDB collection in node.js application using mongoose. I tried using model.collection.dropIndex("username") but it gives me an error UnhandledPromiseRejectionWarning: MongoError: index not found with name [username] .

Here is my Schema

var mongoose = require("mongoose"),
  Schema = mongoose.Schema;

var userTable = new Schema({
  firstname: { type: String, required: true },
  lastname: { type: String, required: true },
  username: { type: String },
  salt: { type: String },
  passwordHash: { type: String },
  email: { type: String, unique: true, required: true },
  sessionToken: { type: String },
  dateCreated: { type: String, default: new Date().toString() },
  loginHistory: [String]
});

module.exports = mongoose.model("userTable", userTable);

When I perform the query in mongo shell from the terminal using command db.usertable.find({}) , I can see that the results still have username field. I also tried after removing the username field from schema file, but even that didn't help.

Thanks in advance.

This drops all the indexes of the collection except for the object id

db.collection.dropIndexs();

to delete a certain index

first type the command

 db.collecction.getIndexes();

在此处输入图片说明

You will see something like above the in the red square is the index name .

db.collection.dropIndex( { "indexname": 1 } )

Creating an index using a unique name:

      db.collection('users')
      .createIndex(
        { email: 1 },
        { unique: true,
          name: 'users.email.unique_index' }, // here we set index name 
      );

and then drop the index using it's name:

 db.collection('users').dropIndex('users.email.unique_index');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM