2017-08-10 45 views
0

我正在努力在Mongodb中保持獨特的字段,但它不工作。問題唯一字段?

這裏我的代碼:

var RepositorySchema = new mongoose.Schema({ 
     folderName: { type: String, unique: true}, 
     tag: String , 
     ismainFolder: { type: Boolean }, 
     innerFiles: [{ filename: String, isFolder: { type: Boolean }, parentfolderId: { type: Schema.ObjectId, ref: 'repository' }, filelocation: { type: String } }], 
     innerFolder: [{ foldername: String, ismainFolder: { type: Boolean }, parentfolderId: { type: Schema.ObjectId, ref: 'repository' } }], 
    }); 

module.exports = mongoose.model('repository', RepositorySchema); 

文件夾名稱不保持唯一值,請幫我

+0

你可以添加一些記錄,你從數據庫中檢索,並且具有相同的'folderName'值,你的問題? – robertklep

+2

收藏中是否有數據?機會實際上並非全是「獨一無二的」,並且由於這個原因創建索引失敗。使用'mongoose.set('debug',true)打開調試'並查看應用程序啓動時的日誌。嘗試創建索引時應該有錯誤。 –

回答

0

嘗試重新創建你的集合中的所有指標。在你的終端運行以下命令:

> mongo 
> use <your_dv> 
> db.repository.reIndex() 

REINDEX命令滴在收集所有索引並重新創建它們。對於具有大量數據和/或大量索引的集合,此操作可能會很昂貴。

+0

如果已經存在重複項,則可能不起作用,這可能是原因。 –

+0

@NeilLunn是的,這可能是一個問題,但有時貓鼬不會在現有收藏中應用唯一索引,即使沒有重複。索引娛樂可以提供幫助。 – alexmac

+0

從我的角度來看,「可以」是基於看到相同的東西被問了幾百次。 99%這些情況下,索引不存在,因爲創建因重複而失敗。無論如何,默認情況下,應用程序啓動時「重新索引」。所以你實際上並沒有告訴OP這裏有什麼好處。現在明白了? –