2017-08-10 44 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这里有什么好处。现在明白了? –