2017-02-18 7 views
0

これは私が取得エラーです: MongoError insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.events.$name_1 dup key: { : "Event name" }mongoDBの 'name'フィールドは自動的にインデックスになりますか?

モンゴは、フィールドの_id 'と「名前」のインデックスであることを述べています。名前欄のエントリは次のとおりです。

インデックスを削除しました。具体的には、Mongoose - caused by :: 11000 E11000 duplicate key error index?となりました。ここでは完全に機能しています。しかし、それがなぜ始まったのか? 自動的にインデックスとして設定されるフィールドはありますか?

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var eventSchema = new Schema({ 
    name: { 
     type: String, 
     required: true 
    } 
    //other fields 
}); 

eventSchema.index({ name: 0 }); 
mongoose.model('Event', eventSchema); 

PS:私はeventSchema.index({ name: 0 });でインデックスを削除しようとしたが、何もしていないようです。

+0

インデックスを手動で削除しようとしましたか?db.events.dropIndex({"name":1}) '? – chridam

答えて

1

デフォルトでMongoDBはインデックスとして_idのみを設定します。

あなたがフィールドname

eventSchema.index({ name: 0 });このようなためにインデックスを追加するコレクションを作成今 Eventは、フィールド名のインデックスを持っていcoolection。

これを修正するには、いくつかのことを行うことができます。

1)@chridamのようなコードでインデックスを削除することをお勧めします。コードからeventSchema.index({ name: 0 });も削除することを忘れないでください。それは次回の実行時に再びインデックスを作成するためです。

2)DBからコレクションを削除します。この行を削除してくださいeventSchema.index({ name: 0 });。もう一度コードを実行してください。今コレクションは索引になります。

3)またはnameインデックスを一意にすることはできません。

これが役に立ちます。

関連する問題