Reputation: 2781
I'm trying the "Develop a RESTful API Using Node.js With Express and Mongoose" example and I ran into a problem with the MongoDB Schema:
POST:
{ title: 'My Awesome T-shirt 2',
description: 'All about the details. Of course it\'s black.',
style: '12345' }
{ [MongoError: E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }]
name: 'MongoError',
err: 'E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }',
there is a unique contraint in the schema definition:
var Product = new Schema({
title: { type: String, required: true },
description: { type: String, required: true },
style: { type: String, unique: true },
modified: { type: Date, default: Date.now } });
how do I get rid off that? When I remove unique: true and restart the app, the schema doesn't get updated.
How does mongodb handle "alters" to the schema?
Upvotes: 25
Views: 17676
Reputation: 3440
I hope this will be helpful.
db.collection_name.getIndexes()
Returns an array that holds a list of documents that identify and describe the existing indexes on the collection. Now find your index name from list and then remove that index as below:
db.users.dropIndex("your_index_name_here")
Here is an example:
db.product.dropIndex({ style: 1 })
Upvotes: 14
Reputation: 6544
When you add a unique constrains on to mongoose schema than an index will be created on the same key. For eg: if you have a schema key called style
then an index will be created as style_1
. Even when you modify the schema the index which is already created will be still there. You need to delete this index in order to reset the unique constrains.
If you have mongoDB Compass installed then you can go to collection->indexes and delete the same. The same interface is available on the Atlas Web interface as well. In my case I had an index on the key url
, which I have deleted.
Upvotes: 9
Reputation:
"How does mongodb handle "alters" to the schema?"
MongoDB is schema-less
The only thing there uniqueness is enforced is on the indexing level where you can define indexes on a collection with unique criteria. So you may want to remove the related index and re-created it if necessary.
Upvotes: 15