2017-02-18 46 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 });

現在coolection Event有字段名索引。

爲了解決它,你可以做很少的事情。

1)使用@chridam建議的代碼刪除索引。不要忘了也從代碼中刪除eventSchema.index({ name: 0 });。因爲它會在下次運行時再次創建索引。

2)從數據庫中刪除集合。刪除此行eventSchema.index({ name: 0 });。再次運行代碼。現在收集將是索引。

3)或者你可以讓name索引不唯一。

希望這會有所幫助。

相關問題