所以我有一个带有嵌套配置文件属性的用户模式,我想确保当配置文件属性存在时所有配置文件 ID 都是唯一的:
UserSchema = new Schema {
...
...
profile : {
id : {
type : String
unique : true
sparse : true
}
...
...
}
}
然而,在运行我的测试时,我可以使用相同的 profile.id 值保存两个不同的用户。嵌套文档是否没有强制执行唯一属性?我错过了什么吗?
打开日志记录后,我可以看到这样的输出(我已经删除了大部分字段):
Mongoose: users.ensureIndex({ email: 1 }) { safe: undefined, background: true, unique: true }
Mongoose: users.insert({ profile: { id: '31056' }) {}
Mongoose: users.ensureIndex({ 'profile.id': 1 }) { safe: undefined, background: true, sparse: true, unique: true }
Mongoose: users.insert({ profile: { id: '31056' }) {}
仍在插入重复值。