MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब अद्वितीय विरल सूचकांक

मेरे पास भी बस यही मुद्दा था। मैं चाहता था कि एक मूल्य या तो शून्य हो या अद्वितीय हो। इसलिए, मैंने दोनों को unique . सेट किया है और sparse झंडे:

var UserSchema = new Schema({
  // ...
  email: {type: String, default: null, trim: true, unique: true, sparse: true},
  // ...
});

और, मैंने सुनिश्चित किया कि डेटाबेस ने वास्तव में db.users.getIndexes(); के साथ इंडेक्स को सही ढंग से बनाया है।

{
  "v" : 1,
  "key" : {
    "email" : 1
  },
  "unique" : true,
  "ns" : "test.users",
  "name" : "email_1",
  "sparse" : true,
  "background" : true,
  "safe" : null
},

(तो, यह नहीं . है यहाँ समस्या के समान ही:mongo _id फ़ील्ड डुप्लिकेट कुंजी त्रुटि )

मेरी गलती default . सेट कर रही थी मान null . कुछ अर्थों में, Mongoose एक स्पष्ट null . को गिनता है एक मूल्य के रूप में जो अद्वितीय होना चाहिए। यदि फ़ील्ड कभी परिभाषित नहीं है (या undefined ) तो इसे अद्वितीय होने के लिए लागू नहीं किया जाता है।

email: {type: String, trim: true, unique: true, sparse: true},

इसलिए, यदि आपको भी यह समस्या हो रही है, तो सुनिश्चित करें कि आप डिफ़ॉल्ट मान सेट नहीं कर रहे हैं, और सुनिश्चित करें कि आप मानों को null पर सेट नहीं कर रहे हैं आपके कोड में कहीं और भी। इसके बजाय, यदि आपको इसे स्पष्ट रूप से सेट करने की आवश्यकता है, तो इसे undefined पर सेट करें (या एक अद्वितीय मूल्य)।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक नोड.जेएस ऐप में मोंगो आईडी के आधार पर एक मोंगोडीबी को क्वेरी करना

  2. मेसोस के माध्यम से मोंगोडीबी को चिंगारी

  3. अमान्य दस्तावेज़:ऑब्जेक्ट को एन्कोड नहीं कर सकता:<उपयोगकर्ता:उपयोगकर्ता ऑब्जेक्ट> MongoEngine के साथ संदर्भ फ़ील्ड

  4. इंसर्ट पर MongoDB का सुरक्षित मोड कितना सुरक्षित है?

  5. नोडजेएस का उपयोग करके JSON ऑब्जेक्ट से किसी आइटम को कैसे हटाएं?