mongodb sparse &unique

最近在使用mongoose插入文檔的時(shí)候遇到了一個(gè)錯(cuò)誤,

錯(cuò)誤大致如下:MongoError: E11000 duplicats key error index: xxx$user_1 dup key: { : null}

意思很明顯,插入的key對(duì)應(yīng)的value值已經(jīng)存在,但是疑惑的地方就在于,這個(gè)值是null,null為什么會(huì)重復(fù)?

原因就在于user這個(gè)key使用了unique的屬性,for example:

? ? let schema = new Schema({

? ? ? ? ?user: { type: String, unique: true }

? ? });

當(dāng)創(chuàng)建文檔的時(shí)候如果不添加user這個(gè)key,就會(huì)被賦一個(gè)默認(rèn)值null,而這個(gè)null只能存在一個(gè),再次創(chuàng)建一個(gè)user為null的時(shí)候就會(huì)報(bào)上面的錯(cuò)誤。

難道沒有解決辦法了嗎?不,聰明的mongodb考慮到了,于是提供了sparse屬性,這兩個(gè)搭配使用就可以解決這個(gè)問題。

mongodb sparse

官方文檔:An index that is both sparse and unique prevents collection from having documents with duplicate values for a field but allows multiple documents that omit the key.

于是這樣使用:

? ? let schema = new Schema({

? ? ???? user: { type: String, unique: true, sparse: true }

? ? });

如果key不是必須唯一的建議不使用unique屬性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容