javascript - How to drop index from mongodb schema using mongoose? - Stack Overflow

I'm trying to remove an index from my mongoDB collection in node.js application using mongoose. I

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 mand 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.

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 mand 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.

Share Improve this question asked May 13, 2019 at 11:10 Vinay MehtaVinay Mehta 1372 silver badges10 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

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

db.collection.dropIndexs();

to delete a certain index

first type the mand

 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');

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744080468a4555194.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信