यह अनुशंसा की जाती है कि यह उपयोग के मामले के लिए संभव है, जो आमतौर पर नहीं होता है। समय श्रृंखला डेटा एक उल्लेखनीय अपवाद है। यह वास्तव में $addToSet
. के साथ लागू नहीं होता है और $push
क्योंकि वे एक सरणी को बढ़ाकर दस्तावेज़ का आकार बढ़ाते हैं।
विराम। क्या आप वाकई हजारों प्रविष्टियों के साथ लगातार बढ़ते सरणी चाहते हैं? क्या आप विशिष्ट प्रविष्टियों को वापस चाहते हुए पूछताछ करने जा रहे हैं? क्या आप सरणी प्रविष्टियों में किसी भी फ़ील्ड को अनुक्रमित करने जा रहे हैं? आप शायद अपनी दस्तावेज़ संरचना पर पुनर्विचार करना चाहते हैं। हो सकता है कि आप प्रत्येक data
चाहते हों market
. जैसे क्षेत्रों के साथ एक अलग दस्तावेज़ के रूप में प्रवेश , type
, createdAt
प्रत्येक में दोहराया गया? आप दस्तावेज़ चालन के बारे में चिंता नहीं करेंगे।
सरणी 75K प्रविष्टियों तक क्यों बढ़ेगी? क्या आप प्रति दस्तावेज़ कम प्रविष्टियाँ कर सकते हैं? क्या यह समय शृंखला डेटाए> ? दस्तावेज़ों को पूर्व-आवंटित करने और एमएमएपी स्टोरेज इंजन के साथ इन-प्लेस अपडेट करने में सक्षम होना बहुत अच्छा है, लेकिन यह हर उपयोग के मामले के लिए संभव नहीं है और यह मोंगोडीबी के लिए अच्छा प्रदर्शन करने की आवश्यकता नहीं है।
नहीं, यह वास्तव में मददगार नहीं है। दस्तावेज़ आकार की गणना सरणी में शून्य मानों के BSON आकार के आधार पर की जाएगी, इसलिए जब आप null
को प्रतिस्थापित करते हैं दूसरे प्रकार के साथ आकार बढ़ जाएगा और आपको वैसे भी दस्तावेज़ पुनर्लेखन मिलेगा। आपको सभी फ़ील्ड वाले ऑब्जेक्ट के साथ सरणी को इसके प्रकार के लिए डिफ़ॉल्ट मान पर सेट करने की आवश्यकता होगी, उदा।
{
"date" : ISODate("1970-01-01T00:00:00Z") // use a date type instead of a string date
"price" : 0,
"amount" : 0,
"tid" : "000000", // assuming 7 character code - strings icky for default preallocation
"type" : "none" // assuming it's "buy" or "sell", want a default as long as longest real values
}