Mongoose Not Creating Indexes

前端 未结 6 899
旧时难觅i
旧时难觅i 2020-12-01 17:49

Trying to create MongoDB indexes. Using the Mongoose ODM and in my schema definition below I have the username field set to a unique index. The collection and document all g

6条回答
  •  孤街浪徒
    2020-12-01 18:38

    Mongoose declares "if the index already exists on the db, it will not be replaced" (credit).

    For example if you had previous defined the index {unique: true} but you want to change it to {unique: true, sparse: true} then unfortunately Mongoose simply won't do it, because an index already exists for that field in the DB.

    In such situations, you can drop your existing index and then mongoose will create a new index from fresh:

    $ mongo
    > use MyDB
    > db.myCollection.dropIndexes();
    > exit
    $ restart node app
    

    Beware that this is a heavy operation so be cautious on production systems!


    In a different situation, my indexes were not being created, so I used the error reporting technique recommended by JohnnyHK. When I did that I got the following response:

    E11000 duplicate key error collection
    

    This was because my new index was adding the constraint unique: true but there were existing documents in the collection which were not unique, so Mongo could not create the index.

    In this situation, I either need to fix or remove the documents with duplicate fields, before trying again to create the index.

提交回复
热议问题