[英]Why this partialFilterExpression is throwing an error?
我有一个这样的用户架构,当用户注册时,我希望将默认值设置为null,但也希望将此值设置为唯一。 我从这篇文章尝试了解决方案,我从字面上复制了相同的解决方案,但是仍然出现此错误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,
},
})
为什么即使语法正确也仍然收到此错误? (aparently)
问题在于,集合中有多个文档,其中mobile
字段的值为null
。 这违反了指定索引的唯一性约束。 正如JohnnyHK在票证中指出的那样,您链接:
请注意,唯一的稀疏索引仍然不允许具有电子邮件字段值为null的多个文档,只有多个没有电子邮件字段的文档。
在您的特定情况下, partialFilterExpression
仅指定mobile
字段存在的索引文档,其中包括定义该字段并将其显式定义为null
文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.