MongoDB में, cursor.map()
विधि कर्सर द्वारा देखे गए प्रत्येक दस्तावेज़ पर एक फ़ंक्शन लागू करती है और एक सरणी में वापसी मानों को जोड़ती है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
db.collection.find().map(<function>)
जहां collection
उस संग्रह का नाम है जिसमें दस्तावेज़ रहते हैं।
और जहां <function>
कर्सर द्वारा देखे गए प्रत्येक दस्तावेज़ पर लागू होने वाला कार्य है।
उदाहरण
मान लीजिए हमारे पास products
. नामक संग्रह है जिसमें निम्नलिखित तीन दस्तावेज़ हैं:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
हम map()
. का उपयोग कर सकते हैं find()
. के संयोजन में विधि प्रत्येक दस्तावेज़ में एक फ़ंक्शन लागू करते समय, उन दस्तावेज़ों के माध्यम से पुनरावृति करने की विधि।
उदाहरण:
db.products.find().map(
function(p) {
p = p.product.replace("Left","Right");
return p;
}
);
परिणाम:
[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]
इस मामले में, हमने कर्सर के माध्यम से पुनरावृति की, और स्ट्रिंग के उदाहरणों को बदल दिया Left
Right
के साथ . हमने फिर परिणाम लौटा दिया।
परिणाम एक सरणी के रूप में लौटाया जाता है।
त्रुटि?
अगर आपको कोई त्रुटि मिलती है, तो इस तरह:
uncaught exception: TypeError: db.products.findOne(...).map is not a function : @(shell):1:1
सुनिश्चित करें कि आप find()
. का उपयोग कर रहे हैं और नहीं findOne()
।
findOne()
विधि वास्तविक दस्तावेज़ लौटाती है, कर्सर नहीं। इसलिए, map()
findOne()
के साथ काम नहीं करेगा . इसके अलावा, भले ही इसने काम किया हो, findOne()
केवल एक ही दस्तावेज़ लौटाता है, और इसलिए, एकाधिक दस्तावेज़ों के माध्यम से पुनरावृति करने की कोई आवश्यकता नहीं होगी।