/ / नोड-मोंगोडब-देशी डेटाबेस को कब हिट करता है? - मोंगोडब, नोड-मोंगोडब-मूल

नोड-मोंगोडब-मूल डेटाबेस कब हिट करता है? - मोंगोडब, नोड-मोंगोड-मूल

जब डेटाबेस का उपयोग करके मारा जाता है तो मुझे समझने में परेशानी होती है node-mongodb-native। उस पर कोई संदर्भ नहीं मिल सका। जैसा कि सब कुछ कॉलबैक आधारित है, इसने मुझे यह एहसास दिलाया कि हर एक कॉल डेटाबेस को हिट करता है ... उदाहरण के लिए, क्या वे दो स्निपेट हैं जो डेटाबेस के हिट होने के मामले में अलग-अलग हैं

// ---- 1
db.collection("bla", function(err, coll) {
coll.findOne({"blo": "bli"}, function(err, doc) {
coll.count(function(err, count) {
console.log(doc, count)
})
})
})

// ---- 2
db.collection("bla", function(err, coll) {
coll.findOne({"blo": "bli"}, function(err, doc) {
db.collection("bla", function(err, coll) {
coll.count(function(err, count) {
console.log(doc, count)
})
})
})
})

मैं मूल रूप से सोच रहा था कि क्या मैं कैश कर सकता हूंसंग्रह और कर्सर के उदाहरण। उदाहरण के लिए, सर्वर प्रारंभ में मुझे केवल एक बार संग्रह की आवश्यकता क्यों नहीं है, और समान उदाहरणों का अनिश्चित काल के लिए पुनः उपयोग करें?

मैं वास्तव में यह समझना चाहता हूं कि पूरी चीज कैसे काम करती है, इसलिए मैं वास्तव में विवरण में सामान की व्याख्या करने वाले एक अच्छे लिंक की सराहना करता हूं।

उत्तर:

उत्तर № 1 के लिए 1

नोड कोड के लिए स्रोत कोड को देख रहा है collection ऐसा लगता है कि यह संग्रह के निर्माण पर MongoDB को पिंग नहीं करेगा जब तक कि आपके पास सख्त मोड न हो: https://github.com/mongodb/node-mongodb-native/blob/master/Readme.md#strict-mode

स्रोत कोड मैंने देखा ( https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L446 ) इस विचार को पुष्ट किया कि यदि सख्त नहीं था तो यह सिर्फ एक नया नोड बनाने की कोशिश करेगा। संग्रह ऑब्जेक्ट को हटाकर कॉलबैक चलाएगा।

तथापि findOne तथा count नोड.जेएस की "आलसी" क्वेरी को तोड़ देगा और परिणाम प्राप्त करने के लिए डेटाबेस को क्वेरी करने के लिए बाध्य करेगा।

ध्यान दें count संग्रह में सभी वस्तुओं के "t" को "सही" लागू करने के लिए संग्रह में जीता जा रहा है। इसके बजाय यह इस संग्रह से जानकारी एकत्र करेगा।

तो पहले स्निपेट के लिए आपको दो प्रश्नों को चलाना चाहिए। के लिए एक findOne और एक के लिए count और दूसरे स्निपेट के लिए दो के बाद से संग्रह बनाने के बाद से findOne MongoDB के लिए क्वेरी लागू नहीं करनी चाहिए।


उत्तर № 2 के लिए 1

कुछ गुगली करने के बाद, मैंने पाया यह लिंक के लिए सर्वोत्तम प्रथाओं के बारे में node-mongodb-native। इसका उत्तर क्रिश्चियन Kvalheim द्वारा दिया गया है जो पुस्तकालय का अनुचर प्रतीत होता है। वह कहता है :

"यदि आप चाहें तो संग्रह वस्तुओं को सुरक्षित रूप से संग्रहीत कर सकते हैं और उनका पुनः उपयोग कर सकते हैं"

तो भले ही कॉल करने के लिए collection यदि यह बनाया गया है तो डेटाबेस को हिट कर सकता है strict मोड, वास्तविक क्लाइंट-साइड संग्रह उदाहरण का पुन: उपयोग किया जा सकता है।