繁体   English   中英

为什么这个partialFilterExpression引发错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM