簡體   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