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

मोंगो उल्का अनुप्रयोग में _id_ फ़ील्ड पर डुप्लिकेट कुंजी त्रुटि देता है

यह आपकी समस्या का समाधान नहीं करेगा, लेकिन यह आपको सही दिशा में इंगित करेगा और शायद आपको उस समस्या को अलग करने में सक्षम करेगा जिसका उपयोग आप एक नया प्रश्न बनाने के लिए कर सकते हैं:

वहाँ नहीं है। केवल एक अनुक्रमणिका है, और इसका एक नाम और एक प्रमुख विवरणक है। यह वही बात नहीं है। नाम डिफ़ॉल्ट इंडेक्स का _id_ है , इसकी कुंजी है _id

_id सामान्य रूप से क्लाइंट-साइड बनाया जाता है, सर्वर-साइड नहीं। सवाल यह है कि वे कुंजियाँ कहाँ से आती हैं, क्योंकि 2ZGvRfuD8iMvRiXJd निश्चित रूप से एक ObjectId नहीं है . यह एक उल्का कुंजी हो सकती है, या आप कुछ कस्टम प्राथमिक कुंजी का उपयोग करते हैं, लेकिन मुझे नहीं पता कि ये कुंजी कैसे उत्पन्न होती हैं। हो सकता है कि जो कुछ भी कुंजी उत्पन्न करता है वह टकराव के लिए अतिसंवेदनशील हो?

इसके बारे में अधिक जानकारी सहायक होगी, लेकिन मैं एक नए प्रश्न को फिर से लिखने का सुझाव दूंगा ताकि प्रश्न बहुत बड़ा न हो या बहुत अधिक इतिहास प्राप्त न हो।

यह पहले उत्तर का सूत्र है:आप अनिवार्य प्राथमिक कुंजी अनुक्रमणिका को नहीं हटा सकते।

संपादित करें:

उल्का, डिफ़ॉल्ट रूप से, आईडी को MongoDb से भिन्न तरीके से जेनरेट करता है . यह समझ में आता है, क्योंकि ObjectId के लिए कन्वेंशन यदि क्लाइंट्स की संख्या अधिक है तो टकराव को संभावित बनाता है (अर्थात यदि क्लाइंट सर्वर इंस्टेंस नहीं हैं, लेकिन क्लाइंट ब्राउज़र हैं, जिनमें से शायद परिमाण के 2-3 ऑर्डर अधिक हैं)।

इसके बजाय, उल्का स्पष्ट रूप से विधि का उपयोग लगातार छद्म यादृच्छिक संख्याएं उत्पन्न करने के लिए करता है क्लाइंट और सर्वर पर . परेशान करने वाली बात यह है कि कार्यान्वयन एक PRNG का उपयोग करता है और एक नहीं पर वापस आ जाता है क्रिप्टो-मजबूत नियतात्मक यादृच्छिक संख्या जनरेटर (एलिया) . दूसरे शब्दों में, यह पता लगाना कि कैसे बिल्कुल आपके आईडी जेनरेट किए जा रहे हैं, यह मुश्किल हो सकता है क्योंकि यह आपके पर्यावरण के बहुत सारे विवरणों पर निर्भर करता है।

समाधान:ObjectId . का उपयोग करने का प्रयास करें प्राथमिक कुंजी के रूप में:

Orders= new Meteor.Collection('Orders', {idGeneration: 'MONGO'});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्प्रिंग बूट के साथ MongoDB क्वेरी लॉग करें

  2. yiimongodbsuite में एम्बेड किए गए दस्तावेज़ को ऊपर रखें

  3. पाइमोंगो एपीआई टाइप एरर:अनहैशेबल dict

  4. क्या स्प्रिंग वेबफ्लक्स और स्प्रिंग डेटा रिएक्टिव में पेजिनेशन को लागू करने का कोई तरीका है?

  5. MongoDB में सर्वर-साइड संग्रहीत फ़ंक्शंस का उपयोग करने की अनुशंसा क्यों नहीं की जाती है?