ड्नगो / डेंजो मंगो डीबीमध्ये अनोखा निर्देशांक तयार केल्यानंतर स्थलांतर कसे करावे

अनस्प्लेशवर फैसल एम यांनी फोटो

मी माझ्या सर्व्हरच्या विकासासाठी जॅंगो / डेंजो / मुंगोडबी / ड्रफ स्टॅक वापरत आहे. सर्व्हर स्वतःच केंद्रीकृत क्रॉलिंग व्यवस्थापक आहे, म्हणून एकाधिक क्रॉलर घटना क्रॉल केलेले न्यूज डेटा सुसंगततेसह संचयित करू शकते.

माझ्या विशिष्ट प्रसंगी, मला या विशिष्ट समस्येचा सामना करावा लागतो. मी आर्टिकल_उर्ल नावाचे मॉडेल परिभाषित केले जे अद्वितीय कॉन्फिगर केलेले नाही. आणि लेख_उर्लसाठी विरोधाभास न घालण्यासाठी वैधकर्ता जोडले. (ड्रॅफच्या सिरीलायझरमध्ये) व्हॅलिडेटर हे एक महाग ऑपरेशन आहे आणि मी मोठ्या प्रमाणात डेटा हाताळत आहे, डेटाबेसच्या थरात हे टाळणे आवश्यक आहे

माझे मूळ मॉडेल असे दिसत होते,

डोंजो आयात मॉडेल कडून
वर्ग रॉ न्यूज (मॉडेल.मॉडेल): वर्ग मेटा: डीबी_टेबल = 'कच्चा' _ आयडी = मॉडेल्स.ऑब्जेक्टइडीफिल्ड () वेळ = मॉडेल्स.डेटटाइमफिल्ड () शीर्षक = मॉडेल्स.छारफिल्ड (अधिकतम लंबाई = २००) लेख_उर्ल = मॉडेल.यूआरएलफिल्ड (अधिकतम लांबी = २००) बॉडी_एचटीएमएल = मॉडेल.टेक्स्टफिल्ड ()

मी बदलल्यानंतर (जोडले गेले अद्वितीय = फील्ड आर्टिकल_उर्ल पर्यंत)

डोंजो आयात मॉडेल कडून
वर्ग रॉ न्यूज (मॉडेल.मॉडेल): वर्ग मेटा: डीबी_टेबल = 'कच्चा' _ आयडी = मॉडेल्स.ऑब्जेक्टइडीफिल्ड () वेळ = मॉडेल्स.डेटटाइमफिल्ड () शीर्षक = मॉडेल.छरफिल्ड (अधिकतम लंबाई = २००) लेख_उर्ल = मॉडेल.यूआरएलफिल्ड (अधिकतम उंची = २००, अद्वितीय = सत्य) मुख्यपृष्ठ_एचटीएमएल = मॉडेल.टेक्स्टफिल्ड ()

मग,

पायथन मॅनेज.पी मेकमिग्रेशन -> नेहमीप्रमाणेच चांगले काम करते

पायथन मॅनेज.पी माइग्रेट ->

पायमोंगो त्रुटी: {'ओके': 0.0, 'एरम्सग': 'ई 11000 डुप्लिकेट की त्रुटी संग्रह संग्रह: डीबी.राव अनुक्रमणिका: Raw_article_url_uniq डूप की: {लेख_उर्ल: "https: // ~…

याचे निराकरण करण्यासाठी, आपल्याला व्यक्तिचलितरित्या अद्वितीय बनवू इच्छित असलेल्या कीसाठी आपला संघर्ष दूर करावा लागेल आणि पुन्हा माइग्रेट चालवावे लागेल.

त्यासाठी जाऊ द्या!

टीएल; डीआर

  • मुंगोडब कलेक्शनमध्ये अद्वितीय म्हणून नवीन अनुक्रमणिका कशी तयार करावी
  • झगडा डेटा कसा काढायचा जेणेकरून अनन्य निर्देशांक त्रुटीमुक्त तयार केला जाऊ शकेल.
  • शेवटी, नवीन मॉडेलच्या अनन्य फील्डसह झांगो / डेंजो / मुंगोडब प्रकल्प कसे स्थलांतरित करावे

मुंगोडब कलेक्शनमध्ये अद्वितीय म्हणून नवीन अनुक्रमणिका कशी तयार करावी

db.raw.ensureIndex ({लेख_उर्ल: १}, {अद्वितीय: सत्य, ड्रॉपडॉप्स: खरे true)

आपण mongodb 2.X वापरत असाल तरच वरील कमांडने कार्य केले पाहिजे

आपण मुंगोडब X.एक्स वापरत असल्यास आपल्याला खाली संदेश प्राप्त होईल.

ok "ओके": 0, "एर्रम्सग": "ई 11000 डुप्लिकेट की त्रुटी संग्रह: डीबी.राव अनुक्रमणिका: आर्टिकल_उर्ल_1 डूप की: {आर्टिकल_उर्ल:" https: // ~~~ "}", "कोड": 11000, "कोडनाव ":" डुप्लीकेटके "," कीपॅटर्न ": article" आर्टिकल_उर्ल ": 1}," की व्हॅल्यू ": article" लेख_उर्ल ":" https: // ~~~ "}
मुंगोडब X. एक्स ड्रॉपअप्स (ड्रॉप डुप्लिकेट्स) नापसंत केल्यामुळे आणि त्याकडे दुर्लक्ष केले जात आहे.

अधिकृत दस्तऐवज म्हणतो की हे ठीक आहे / परंतु ते नाही (2020.2 पासून दस्तऐवज अद्यतनित केलेला नाही). तर वरील कमांड अप्रचलित होईल आणि तुम्हाला टाईप करावे लागेल

db.raw.ensureIndex ({लेख_उर्ल: 1 1, {अद्वितीय: सत्य})

आपणास अद्याप तीच त्रुटी प्राप्त होईल, आपणास प्रथम अद्वितीय अनुक्रमणिका तयार करण्यासाठी द्वंद्व की स्वहस्ते काढाव्या लागतील. (खाली अनुसरण करा)

विवादित डेटा कसा काढायचा जेणेकरून अनन्य निर्देशांक त्रुटीमुक्त तयार केला जाऊ शकेल.

db.raw.find ({}, {Article_url: 1}). क्रमवारी लावा ({_ id: 1}). forEach (फंक्शन (दस्तऐवज) {db.raw.remove ({_ id: {t gt: doc._id}, लेख_उर्ल: दस्तऐवज_खंडा_उर्ल});})

आपल्या संग्रहातील आकारानुसार या ऑपरेशनमध्ये थोडा वेळ लागू शकेल. एकदा या चरणात प्रतिस्पर्धा झाल्यास आपण आता की साठी अद्वितीय अनुक्रमणिका तयार करू शकता (पुन्हा वरच्या भागावर कमांड चालवा)

Misc :: अतिरिक्त आज्ञा

'कच्च्या' संकलनासाठी // तयार सूची तयार करा <- हे db.raw.getIndexes पुनर्स्थित करा ()
// अनुक्रमणिकेच्या नावाने तयार केलेली अनुक्रमणिका काढा (आपण वरील आदेशासह यादी करू शकता) db.raw.DPIndex ( )

संदर्भ

https://docs.mongodb.com/manual/tutorial/manage-indexes/