2012-11-20 10 views
8

के लिए मोंगो _id मैं एक mongo सरणी में वस्तुओं के लिए संपत्ति के रूप में _id जोड़ना चाहता हूं।सबडो दस्तावेज़ सरणी

क्या यह अच्छा अभ्यास है? क्या अनुक्रमण के साथ कोई समस्या है?

+2

प्रश्न यह है कि यह सवाल थोड़ा अस्पष्ट है। क्या आप थोड़ा और विवरण दे सकते हैं? – Eric

+0

http://stackoverflow.com/questions/8245538/mongodb-id-cannot-be-an-array – 42n4

+3

मुझे नहीं लगता कि लिंक के इस प्रश्न के साथ कुछ भी करना है। – Sammaye

उत्तर

16

मैं एक mongo सरणी में वस्तुओं के लिए संपत्ति के रूप में _id जोड़ना चाहता हूं।

मुझे लगता है: इस प्रश्न के लिए संरचना के

{ 
    g: [ 
     { _id: ObjectId(), property: '' }, 
     // next 
    ] 
} 

प्रकार।

क्या यह अच्छा अभ्यास है?

सामान्य रूप से नहीं। _id एस इकाइयों के लिए अद्वितीय पहचानकर्ता हैं। जैसे कि यदि आप उप-दस्तावेज़ ऑब्जेक्ट के भीतर _id जोड़ना चाहते हैं तो हो सकता है कि आपने अपने डेटा को बहुत अच्छी तरह से सामान्य नहीं किया हो और यह आपके स्कीमा डिज़ाइन के भीतर मौलिक दोष का संकेत हो।

उप-दस्तावेज उस दस्तावेज़ के लिए दोहराने वाले डेटा को शामिल करने के लिए डिज़ाइन किए गए हैं, यानी पते या उपयोगकर्ता या कुछ।

कहा जा रहा है कि _id हमेशा जोड़ने के लिए एक बुरी चीज नहीं है। उदाहरण के साथ मैंने अभी पते के साथ कहा है। कल्पना करें कि आपके पास एक शॉपिंग कार्ट सिस्टम था और (किसी कारण से) आपने ऑर्डर दस्तावेज़ में पते को दोहराना नहीं था, तो आप उस उप-दस्तावेज़ को प्राप्त करने के लिए _id या किसी अन्य पहचानकर्ता का उपयोग करेंगे।

इसके अलावा आपको दस्तावेज़ों को जोड़ने पर विचार करना होगा। यदि वह _id किसी अन्य दस्तावेज़ का वर्णन करता है और गुण उस दस्तावेज़ के लिए उस लिंक के लिए कस्टम विशेषताएँ हैं जो उस लिंक किए गए दस्तावेज़ के संबंध में हैं तो यह भी ठीक है।

क्या अनुक्रमण के साथ कोई समस्या है? ताकि ध्यान में रखना करने के लिए कुछ एक छोटे, कम विशिष्ट आईडी खत्म हो गया है या नहीं उप दस्तावेज़ों के लिए बिल्कुल एक _id का उपयोग कर

एक ObjectId अभी भी काफी बड़ा है।

इंडेक्स के लिए यह वास्तव में दस्तावेज़ पर मानक _id फ़ील्ड के लिए कोई भी अलग काम नहीं करता है और पूरे क्षेत्र में एक अद्वितीय अनुक्रमणिका संग्रह (परिदृश्य निर्भर, अपने प्रश्नों का परीक्षण) में काम करना चाहिए।

एनबी: मोंगोडीबी आपके लिए उप-दस्तावेजों में _id नहीं जोड़ देगा।

+0

@aioobe मुझे लगता है कि इस मामले में हाँ, मेरा मतलब सामान्यीकरण था, यह एक बहुत पुराना जवाब है, लेकिन मेरा मानना ​​है कि मेरा मतलब है कि उसके बारे में मेरा मतलब है कि संस्थाओं को अलग नहीं करना जो सामान्यीकरण होगा। – Sammaye

+0

@aioobe किया धन्यवाद – Sammaye

+0

यदि मैं उप दस्तावेज़ पर एक mongodb ऑब्जेक्ट _id बना देता हूं, तो क्या यह पूरे संग्रह में स्वचालित रूप से अद्वितीय है? – Saitama

संबंधित मुद्दे