mongoose attempting to create index every time I start the server | Index with pattern: already exists with different options

Course Queries Syllabus Queries 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Syllabus Queries related to Course Queries. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago


my schema:

var courseSchema = mongoose.Schema({
    title: {
        type: String
    },
    instructors: {
        type: String
    },
    .
    .    
  fields: {type: [String], text: true},
  created_at: Date,
  updated_at: Date
});

courseSchema.index({title: 'text', subject: 'text', summary: 'text', syllabus: 'text'});

var Course = mongoose.model('Course', courseSchema);
module.exports = {Course};

searching text:

Course.find(
            { $text: { $search: req.query.title } },
            { score: { $meta: "textScore" } }
        ).sort( { score: { $meta: "textScore" } } 

    )

when I start the server it gives the error:

MongoError: Index with pattern: { _fts: "text", _ftsx: 1 } already exists with different options

I have tried to drop the index by using

db.courses.dropIndex('title_text_subject_text_summary_text_syllabus_text');

but when I restart the server, it again gives the same error and I can find that index with key _fts and _ftsx are already there.

Which step am I doing wrong? Thanks in advance.

edit: there was this field that I didn't add in the question which was creating the index. I removed it, its working fine.

fields: {type: [String], text: true},
profilepic.png
manpreet 2 years ago

Simple: Don't create the index in the schema file. That will run every time you start your server and give the error you're seeing.

Index creation should be a maintenance task you execute in demand or otherwise only when you know you need to.

You could swap that for ensureIndex instead, but that's also recommended to be an on demand task, not an on server start task.


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.