2012-09-17 22 views
18

के डेटाबेस को संग्रहीत करने के लिए मुझे ऑब्जेक्ट आईडी की एक सरणी को स्टोर करना होगा। मुझे क्या उपयोग करना चाहिए? इस तरहमोंगो डीबी ऑब्जेक्ट आईडी के

[ObjectId("50350e12a36feb1be6000364"), ObjectId("57350e12a37fef1be6000922"), ObjectId("10350e17d34ffb1be6200925")] 

या कुछ और: कुछ इस तरह

["50350e12a36feb1be6000364", "57350e12a37fef1be6000922", "10350e17d34ffb1be6200925"] 

मैं दूसरे के साथ अंतरिक्ष की बचत हो सकती है, और फिर ObjectId लिए डाली है, लेकिन मैं इस दृष्टिकोण का उपयोग करके कुछ भी खो रहा हूँ? ObjectId एस संबंधित डेटाबेस में विदेशी कुंजी की तरह व्यवहार करते हैं?

उत्तर

25

मैं निश्चित रूप से पहले दृष्टिकोण के साथ जाऊंगा, ObjectId एस सीधे संग्रहित करता हूं। यह ObjectId is 12 bytes के रूप में अंतरिक्ष बचाता है जबकि दूसरी दृष्टिकोण स्ट्रिंग 24 बाइट्स है।

इसके अलावा, ObjectId एस का उपयोग बाद में वस्तुओं को लाने के लिए किया जाता है, ObjectId के रूप में संग्रहीत कुछ परेशानी बचाता है।

11

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

+4

+1, हाँ, मुझे लगता है कि प्रश्न में ऑब्जेक्ट आईडी के आकार के बारे में एक बुनियादी गलतफहमी है। –