我已经将表单数据添加到mongoDB第一次保存数据但是之后出现此错误,我没有任何具有唯一类型的字段
{ [MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.employees.$employeeId_1 dup key: { : null }]
name: 'MongoError',
message: 'insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.employees.$employeeId_1 dup key: { : null }',
driver: true,
code: 11000,
index: 0,
errmsg: 'insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.employees.$employeeId_1 dup key: { : null }',
getOperation: [Function],
toJSON: [Function],
toString: [Function] }
这是我没有唯一字段的架构
var employee =
{
empCode : { type : String , required : true },
firstName : { type : String , required : true },
lastName : { type : String },
email : { type : String },
DOJ :{ type : Date , default: Date.now },
DOB :{ type : Date },
phoneNo : { type : String },
authentication :
{
username : { type : String },
password : { type : String }
},
designation :
{
designationID: [{type : mongoose.Schema.ObjectId , ref:'designation'}],
effFrom :{ type : Date , default: Date.now },
effTo : { type : Date }
},
grade :
{
gradeID : [{type : mongoose.Schema.ObjectId, ref:'grade'}],
effFrom :{ type : Date , default: Date.now },
effTo : { type : Date }
},
Department :
{
departmentID : [{type : mongoose.Schema.ObjectId ,ref:'department'}],
effFrom :{ type : Date , default: Date.now },
effTo : { type : Date }
},
manager :
{
managerID : [{type : mongoose.Schema.ObjectId , ref:'employee'}],
effFrom :{ type : Date , default: Date.now },
effTo : { type : Date }
},
role :
{
roleID : [{type : mongoose.Schema.ObjectId , ref:'role'}],
effFrom :{ type : Date , default: Date.now },
effTo : { type : Date }
},
status : {type:Boolean}
}
我无法找到哪个字段给出错误,如果您能找到错误请建议我,这对我来说将是非常有用的,在此先感谢
答案 0 :(得分:2)
请从mongo db中删除你的收藏,然后执行你的代码。
您的收藏集有字段employeeID
答案 1 :(得分:1)
错误消息表示已存在browser_action.default_popup
作为null
的记录。也就是说,有一个employeeId
没有employees
。
如下文所述:
如果文档没有唯一索引中索引字段的值,则索引将为此文档存储空值。由于唯一约束,MongoDB只允许一个缺少索引字段的文档。如果有多个文档没有索引字段的值或缺少索引字段,则索引构建将失败并出现重复键错误。
在您的情况下,employeeId
的{{1}}似乎是employeeId
,将其从employees
更改为unique index
可以解决您的问题。因为unique index
约束spare index
来从唯一索引中过滤这些unique index
值并避免错误。
或者通过sparse index
null
上的索引