MongoDB唯一索引(unique:true)導致的問題
阿新 • • 發佈:2019-01-07
最近在使用Vue + MongoDB + express 寫一個專案。
之前使用mongoose 定義Schema的時候 先定義一個欄位為unique(唯一索引),類似於:
const bookSchema = new mongoose.Schema({
bookId: {type: String, unique: true}
});
這樣的一個結構,然後後來經過測試後,即是建立好了相關資料以及集合等,發現這個欄位不能使用唯一索引,然後就在這段程式碼中的unique刪除了,然後繼續執行,發現控制檯一直報錯 : [Mongoose
E11000 duplicate key error index:] 百度了半天發現根本沒什麼卵的解決辦法,然後我在一個國外論壇上看到一個解決:可能之前使用過唯一索引而沒有清除乾淨。然後我就用資料庫去查詢該集合的索引果然還包含了之前定義的唯一索引,使用dropIndex()方法刪除該索引即可。
總結:如果之前在mongoose中使用過unique唯一索引的話,在使用該唯一索引建立了相關資料後再刪除mongoose中的unique程式碼是無法完全清除該唯一索引的,需要使用mongodb手動清除該集合的唯一索引。