यहाँ एक नमूना दस्तावेज़ है जिसका मैं उपयोग करने जा रहा हूँ।

{
    "_id"       : ObjectId("5cc6ccec131355bb173c64ba"),
    "username"  : "user1",
    "firstname" : "john",
    "lastname"  : "doe"
}

मुझे हर बार username फ़ील्ड का उपयोग करके दस्तावेज़ ढूँढ़ने होंगे।

मैंने hashed index का उपयोग किया लेकिन, यह इसे unique फ़ील्ड बनाने की अनुमति नहीं देता है।

{
    "ok"       : 0,
    "errmsg"   : "Currently hashed indexes cannot guarantee uniqueness. Use a regular index.",
    "code"     : 16764,
    "codeName" : "Location16764"
}

यदि लगभग 1M आइटम हैं, तो username फ़ील्ड द्वारा आइटम को खोजने का सबसे तेज़ तरीका क्या है?

0
sumedhe 1 मई 2019, 17:19

1 उत्तर

सबसे बढ़िया उत्तर

विकल्प 1: एक अद्वितीय अनुक्रमणिका बनाएं। मुझे 1M रिकॉर्ड के साथ भी किसी प्रदर्शन समस्या का अनुमान नहीं है। मुझे 5 सदस्यीय प्रतिकृति सेट में संग्रह> 1 बिलियन आकार के साथ भी अच्छा प्रदर्शन मिलता है।

db.members.createIndex( { "username": 1 }, { unique: true } )

विकल्प 2: उपयोगकर्ता नाम को _id फ़ील्ड में संग्रहीत करें, क्योंकि आप जानते हैं कि यह अद्वितीय है। रिकॉर्ड कब बनाया गया था, इसका पता लगाने के लिए आप _id फ़ील्ड का उपयोग करने की क्षमता खो देंगे, इसलिए यदि आपको उस क्षमता की आवश्यकता है तो आपको टाइमस्टैम्प के साथ एक और फ़ील्ड स्टोर करने की आवश्यकता होगी।

1
Bajal 1 मई 2019, 14:58