我正在尝试使用 Mongoose 进行 upsert,但是对于应该触发 upsert 的键,我遇到了重复的键错误。
架构:
"resource": {type: Schema.ObjectId, ref: "Resource"},
"skill": {type: Schema.ObjectId, ref: "Skill"},
"level": {type: Number, min: 1, max: 5}
.index({skill: 1, resource: 1}, {unique: true});
然后我打电话:
//self is a Resource instance
ResourceSkillLevel.update({
resource: self._id,
skill: skill._id,
level: level
}, {$set: {level: level}}, {upsert: true}, cb);
如果(resource, skill)
不存在,则此调用可以正常工作并正确创建ResourceSkillLevel
条目。但是,当我再次调用它时,我得到duplicate key error index
. 列出的重复键是元组资源/技能键。为什么找到重复项时它不更新插入?