Model.create() बनाम Model.collection.insert():एक तेज तरीका
Model.create()
यदि आप बहुत बड़ी मात्रा में काम कर रहे हैं तो सम्मिलित करने का एक बुरा तरीका है। यह बहुत धीमा होगा . उस स्थिति में आपको Model.collection.insert
. का उपयोग करना चाहिए , जो काफी बेहतर . प्रदर्शन करता है . बल्क के आकार के आधार पर, Model.create()
दुर्घटनाग्रस्त भी होगा! एक लाख दस्तावेजों के साथ प्रयास किया, कोई भाग्य नहीं। Model.collection.insert
. का उपयोग करना इसमें कुछ ही सेकंड लगे।
Model.collection.insert(docs, options, callback)
docs
सम्मिलित किए जाने वाले दस्तावेज़ों की सरणी है;options
एक वैकल्पिक कॉन्फ़िगरेशन ऑब्जेक्ट है - दस्तावेज़ देखेंcallback(err, docs)
सभी दस्तावेज़ सहेजे जाने या कोई त्रुटि होने के बाद कॉल किया जाएगा। सफलता मिलने पर, दस्तावेज़ स्थायी दस्तावेज़ों का एक समूह होता है।
जैसा कि मोंगोज़ के लेखक ने यहां बताया है, यह विधि किसी भी सत्यापन प्रक्रिया को बायपास कर देगी और सीधे मोंगो ड्राइवर तक पहुंच जाएगी। चूंकि आप बड़ी मात्रा में डेटा का प्रबंधन कर रहे हैं, इसलिए यह एक ट्रेड-ऑफ है, अन्यथा आप इसे अपने डेटाबेस में बिल्कुल भी सम्मिलित नहीं कर पाएंगे (याद रखें कि हम यहां सैकड़ों हजारों दस्तावेज़ों की बात कर रहे हैं)।पी>
एक साधारण उदाहरण
var Potato = mongoose.model('Potato', PotatoSchema);
var potatoBag = [/* a humongous amount of potato objects */];
Potato.collection.insert(potatoBag, onInsert);
function onInsert(err, docs) {
if (err) {
// TODO: handle error
} else {
console.info('%d potatoes were successfully stored.', docs.length);
}
}
अपडेट 2019-06-22 :हालांकि insert()
अभी भी ठीक इस्तेमाल किया जा सकता है, इसे insertMany()
के पक्ष में हटा दिया गया है . पैरामीटर बिल्कुल समान हैं, इसलिए आप इसे केवल ड्रॉप-इन प्रतिस्थापन के रूप में उपयोग कर सकते हैं और सब कुछ ठीक काम करना चाहिए (ठीक है, वापसी मूल्य थोड़ा अलग है, लेकिन आप शायद वैसे भी इसका उपयोग नहीं कर रहे हैं)।
संदर्भ
- मोंगो दस्तावेज़
- गूगल ग्रुप पर आरोन हेकमैन बल्क इंसर्ट पर चर्चा कर रहा है