我有一个这样的用户架构,当用户注册时,我希望将默认值设置为null,但也希望将此值设置为唯一。我尝试了此post的解决方案
我从字面上复制了相同的解决方案,但是仍然出现此错误
MongoError: E11000 duplicate key error index: ppp-ng-dev.users.$mobile_1 dup key: { : null }
我的模式
const userSchema = new Schema({
mobile: {
type: Number,
required: false,
index: {
unique: true,
partialFilterExpression: {mobile: {$exists: true }}
},
default: null,
},
})
即使语法正确,为什么仍会收到此错误? (显然)
答案 0 :(得分:1)
问题是集合中有多个文档,其中字段null
的值为mobile
。这违反了指定索引的唯一性约束。正如JohnnyHK在票证中所指出的,您已链接:
请注意,唯一的稀疏索引仍然不允许具有电子邮件字段值为null的多个文档,只有多个没有电子邮件字段的文档。
在您的特定情况下,partialFilterExpression
仅指定存在字段mobile
的索引文档,其中包括定义了字段并将其显式定义为null
的文档。