परिचय
MongoDB का उपयोग करते समय, आप अपना अधिकांश समय किसी न किसी तरह से दस्तावेज़ों के प्रबंधन में व्यतीत करेंगे। चाहे आप नए दस्तावेज़ बना रहे हों और उन्हें संग्रह में जोड़ रहे हों, दस्तावेज़ पुनर्प्राप्त कर रहे हों, डेटा अपडेट कर रहे हों, या पुरानी वस्तुओं को काट रहे हों, दस्तावेज़ MongoDB मॉडल के केंद्र में हैं।
इस गाइड में, हम कवर करेंगे कि MongoDB दस्तावेज़ क्या हैं और फिर उन सामान्य कार्यों को कवर करेंगे जिनकी आपको दस्तावेज़-केंद्रित वातावरण को प्रबंधित करने के बारे में जानने की आवश्यकता होगी।
MongoDB दस्तावेज़ क्या हैं?
MongoDB में, डेटाबेस और संग्रह के भीतर सभी डेटा दस्तावेज़ों में संग्रहीत होते हैं। चूंकि संग्रह डिफ़ॉल्ट रूप से एक आवश्यक स्कीमा निर्दिष्ट नहीं करते हैं, संग्रह के भीतर दस्तावेज़ों में एक मनमाने ढंग से जटिल संरचना हो सकती है और सहोदर दस्तावेज़ों द्वारा उपयोग किए गए प्रारूप से मेल खाने की आवश्यकता नहीं है। यह अविश्वसनीय लचीलापन प्रदान करता है और एप्लिकेशन आवश्यकताओं में परिवर्तन के रूप में स्कीमा को व्यवस्थित रूप से विकसित करने की अनुमति देता है।
MongoDB दस्तावेज़ स्वयं BSON डेटा क्रमांकन प्रारूप का उपयोग करते हैं, जो JSON जावास्क्रिप्ट ऑब्जेक्ट नोटेशन का एक द्विआधारी प्रतिनिधित्व है। यह परिभाषित डेटा प्रकारों के साथ एक संगठित संरचना प्रदान करता है जिसे प्रोग्रामेटिक रूप से पूछताछ और संचालित किया जा सकता है।
बीएसओएन दस्तावेज़ घुंघराले ब्रेसिज़ की एक जोड़ी द्वारा दर्शाए जाते हैं ({}
) जिसमें की-वैल्यू पेयर होते हैं। बीएसओएन में, इन डेटा दोहों को फ़ील्ड . के रूप में जाना जाता है और इसका मान . क्षेत्र पहले आता है और एक स्ट्रिंग द्वारा दर्शाया जाता है। मान कोई भी मान्य BSON डेटा प्रकार हो सकता है। एक कोलन (:
) फ़ील्ड को उसके मान से अलग करता है। प्रत्येक फ़ील्ड और मान युग्म को एक दूसरे से अलग करने के लिए अल्पविराम का उपयोग किया जाता है।
उदाहरण के तौर पर, यहां एक वैध बीएसओएन दस्तावेज है जिसे मोंगोडीबी समझ सकता है:
{ _id: 80380, vehicle_type: "car", mileage: 7377.80, color: "blue", markets: [ "US", "UK" ], options: { transmission: "automatic", num_doors: 4, power_windows: true }}
यहाँ, हम काफी कुछ प्रकार देख सकते हैं:
_id
एक पूर्णांक हैvehicle_type
औरcolor
तार हैंmileage
एक फ्लोट हैmarkets
स्ट्रिंग्स की एक सरणी हैoptions
एक नेस्टेड दस्तावेज़ होता है जिसमें एक स्ट्रिंग, एक पूर्णांक और एक बूलियन होता है
इस लचीलेपन के कारण, डेटा संग्रहीत करने के लिए दस्तावेज़ काफी लचीले माध्यम हैं। नए फ़ील्ड आसानी से जोड़े जा सकते हैं, दस्तावेज़ एक-दूसरे के भीतर एम्बेड किए जा सकते हैं, और संरचनात्मक जटिलता संग्रहीत किए जा रहे डेटा से बिल्कुल मेल खाती है।
नए दस्तावेज़ कैसे बनाएं
एक नया दस्तावेज़ बनाने के लिए, उस डेटाबेस में बदलें जहाँ आप बनाए गए दस्तावेज़ को संग्रहीत करना चाहते हैं। हम एक school
का उपयोग करेंगे इस आलेख में प्रदर्शन उद्देश्यों के लिए डेटाबेस:
use school
आप उस संग्रह को भी चुनना चाहेंगे जहाँ आप दस्तावेज़ सम्मिलित करना चाहते हैं। डेटाबेस की तरह, आपको उस संग्रह को स्पष्ट रूप से बनाने की ज़रूरत नहीं है जहाँ आप दस्तावेज़ सम्मिलित करना चाहते हैं। पहला डेटा लिखे जाने पर MongoDB स्वचालित रूप से इसे बनाएगा। इस उदाहरण के लिए, हम students
. नामक संग्रह का उपयोग करेंगे ।
अब जब आप जानते हैं कि दस्तावेज़ कहाँ संग्रहीत किया जाएगा, तो आप निम्न विधियों में से किसी एक का उपयोग करके एक नया दस्तावेज़ सम्मिलित कर सकते हैं।
insert()
का उपयोग करना विधि
insert()
विधि आपको उस संग्रह में एक या अधिक दस्तावेज़ सम्मिलित करने की अनुमति देती है जिस पर इसे बुलाया जाता है।
एकल दस्तावेज़ सम्मिलित करने के लिए, दस्तावेज़ को संग्रह पर कॉल करके विधि को पास करें। यहां, हम एशले नाम के एक छात्र के लिए एक नया दस्तावेज़ सम्मिलित करते हैं:
db.students.insert( { first_name: "Ashley", last_name: "Jenkins", dob: new Date("January 08, 2003"), grade_level: 8 })
WriteResult({ "nInserted" : 1 })
यदि आप एक दस्तावेज़ को insert()
में पास करने के बजाय एक ही समय में एक से अधिक दस्तावेज़ सम्मिलित करना चाहते हैं , दस्तावेज़ों की एक सरणी पास करें। हम ब्रायन और लिआह नाम के छात्रों के लिए दो नए दस्तावेज़ जोड़ सकते हैं:
db.students.insert( [ { first_name: "Brian", last_name: "McMantis", dob: new Date("September 18, 2010"), grade_level: 2 }, { first_name: "Leah", last_name: "Drake", dob: new Date("October 03, 2009") } ])
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ]})
चूंकि हमने बल्क राइट ऑपरेशन किया है, इसलिए हमारा रिटर्न वैल्यू एक BulkWriteResult
है WriteResult
. के बजाय वस्तु जो हमने पहले देखी थी।
जबकि insert()
विधि लचीली है, इसे निम्नलिखित दो विधियों के पक्ष में कई MongoDB ड्राइवरों में पदावनत किया गया है।
insertOne()
का उपयोग करना विधि
insertOne()
एकल दस्तावेज़ सम्मिलित करने के लिए विधि का उपयोग किया जा सकता है। insert()
. के विपरीत विधि, यह एक समय में केवल एक दस्तावेज़ सम्मिलित कर सकता है, जो इसके व्यवहार को थोड़ा अधिक अनुमानित बनाता है।
सिंटैक्स वैसा ही होता है जब आप insert()
. का उपयोग करते हैं एक दस्तावेज़ जोड़ने के लिए। हम नाओमी नाम के एक और छात्र को जोड़ सकते हैं:
db.students.insertOne( { first_name: "Naomi", last_name: "Pyani" })
{ "acknowledged" : true, "insertedId" : ObjectId("60e877914655cbf49ff7cb86")}
insert()
. के विपरीत , insertOne()
विधि कुछ अतिरिक्त उपयोगी जानकारी वाले दस्तावेज़ को लौटाती है। यह पुष्टि करता है कि लेखन को क्लस्टर द्वारा स्वीकार किया गया था और इसमें ऑब्जेक्ट आईडी शामिल है जिसे दस्तावेज़ को सौंपा गया था क्योंकि हमने एक प्रदान नहीं किया था।
insertMany()
का उपयोग करना विधि
उन परिदृश्यों को कवर करने के लिए जहां आप एक साथ कई दस्तावेज़ सम्मिलित करना चाहते हैं, insertMany()
विधि अब अनुशंसित है। ठीक उसी तरह जैसे insert()
with के साथ एक से अधिक दस्तावेज़ों को सम्मिलित करते समय , insertMany()
दस्तावेज़ों की एक श्रृंखला लेता है।
हम जैस्मीन, माइकल और टोनी नाम के तीन नए छात्रों को जोड़ सकते हैं:
db.students.insertMany( [ { first_name: "Jasmine", last_name: "Took", dob: new Date("April 11, 2011") }, { first_name: "Michael", last_name: "Rodgers", dob: new Date("February 25, 2008"), grade_level: 6 }, { first_name: "Toni", last_name: "Fowler" } ])
{ "acknowledged" : true, "insertedIds" : [ ObjectId("60e8792d4655cbf49ff7cb87"), ObjectId("60e8792d4655cbf49ff7cb88"), ObjectId("60e8792d4655cbf49ff7cb89") ]}
insertOne()
. की तरह , insertMany()
एक दस्तावेज़ देता है जो लेखन को स्वीकार करता है और एक सरणी प्रदान करता है जिसमें आईडी शामिल होती है जो सम्मिलित दस्तावेज़ों को सौंपी जाती है।
मौजूदा दस्तावेज़ों के लिए क्वेरी कैसे करें
दस्तावेजों की पूछताछ एक काफी विस्तृत विषय है जो अपने स्वयं के लेख की गारंटी देता है। आप MongoDB के भीतर क्वेरी डेटा पर हमारी मार्गदर्शिका में विभिन्न प्रकार के दस्तावेज़ों को पुनः प्राप्त करने के लिए क्वेरी तैयार करने के तरीके के बारे में विवरण प्राप्त कर सकते हैं।
जबकि विवरण ऊपर दिए गए लेख में सबसे अच्छा छोड़ दिया गया है, हम कम से कम उन तरीकों को कवर कर सकते हैं जो MongoDB क्वेरी दस्तावेज़ों को प्रदान करता है। MongoDB से दस्तावेज़ प्राप्त करने का मुख्य तरीका find()
. पर कॉल करना है विचाराधीन संग्रह पर विधि।
उदाहरण के लिए, students
. से सभी दस्तावेज़ एकत्र करने के लिए , आप कॉल कर सकते हैं find()
बिना किसी तर्क के:
db.students.find()
{ "_id" : ObjectId("60e8743b4655cbf49ff7cb83"), "first_name" : "Ashley", "last_name" : "Jenkins", "dob" : ISODate("2003-01-08T00:00:00Z"), "grade_level" : 8 }{ "_id" : ObjectId("60e875d54655cbf49ff7cb84"), "first_name" : "Brian", "last_name" : "McMantis", "dob" : ISODate("2010-09-18T00:00:00Z"), "grade_level" : 2 }{ "_id" : ObjectId("60e875d54655cbf49ff7cb85"), "first_name" : "Leah", "last_name" : "Drake", "dob" : ISODate("2009-10-03T00:00:00Z") }{ "_id" : ObjectId("60e877914655cbf49ff7cb86"), "first_name" : "Naomi", "last_name" : "Pyani" }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb87"), "first_name" : "Jasmine", "last_name" : "Took", "dob" : ISODate("2011-04-11T00:00:00Z") }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb88"), "first_name" : "Michael", "last_name" : "Rodgers", "dob" : ISODate("2008-02-25T00:00:00Z"), "grade_level" : 6 }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler" }
आउटपुट को अधिक पठनीय बनाने के लिए, आप pretty()
. को भी चेन कर सकते हैं find()
. के बाद विधि :
db.<collection>.find().pretty()
{ "_id" : ObjectId("60e8743b4655cbf49ff7cb83"), "first_name" : "Ashley", "last_name" : "Jenkins", "dob" : ISODate("2003-01-08T00:00:00Z"), "grade_level" : 8}{ "_id" : ObjectId("60e875d54655cbf49ff7cb84"), "first_name" : "Brian", "last_name" : "McMantis", "dob" : ISODate("2010-09-18T00:00:00Z"), "grade_level" : 2}{ "_id" : ObjectId("60e875d54655cbf49ff7cb85"), "first_name" : "Leah", "last_name" : "Drake", "dob" : ISODate("2009-10-03T00:00:00Z")}{ "_id" : ObjectId("60e877914655cbf49ff7cb86"), "first_name" : "Naomi", "last_name" : "Pyani"}{ "_id" : ObjectId("60e8792d4655cbf49ff7cb87"), "first_name" : "Jasmine", "last_name" : "Took", "dob" : ISODate("2011-04-11T00:00:00Z")}{ "_id" : ObjectId("60e8792d4655cbf49ff7cb88"), "first_name" : "Michael", "last_name" : "Rodgers", "dob" : ISODate("2008-02-25T00:00:00Z"), "grade_level" : 6}{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler"}
आप देख सकते हैं कि एक _id
प्रत्येक दस्तावेज़ में फ़ील्ड जोड़ा गया है। MongoDB को एक अद्वितीय _id
की आवश्यकता है संग्रह में प्रत्येक दस्तावेज़ के लिए। यदि आप वस्तु निर्माण पर एक प्रदान नहीं करते हैं, तो यह आपके लिए एक जोड़ देगा। आप इस आईडी का उपयोग किसी एक वस्तु को मज़बूती से पुनः प्राप्त करने के लिए कर सकते हैं:
db.students.find( { _id : ObjectId("60e8792d4655cbf49ff7cb89") })
{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler" }
आप ऊपर दिए गए लेख से डेटा क्वेरी करने के विभिन्न तरीकों के बारे में अधिक जानकारी प्राप्त कर सकते हैं।
मौजूदा दस्तावेज़ों को कैसे अपडेट करें
डेटाबेस के लिए कई या अधिकतर उपयोग के मामलों में आपको डेटाबेस के भीतर मौजूदा डेटा को संशोधित करने में सक्षम होने की आवश्यकता होती है। एक नए मान को दर्शाने के लिए किसी फ़ील्ड को अद्यतन करने की आवश्यकता हो सकती है या आपको मौजूदा दस्तावेज़ के उपलब्ध होने पर अतिरिक्त जानकारी जोड़ने की आवश्यकता हो सकती है।
MongoDB मौजूदा दस्तावेज़ों को अद्यतन करने के लिए कुछ संबंधित विधियों का उपयोग करता है:
updateOne()
:प्रदान किए गए फ़िल्टर के आधार पर संग्रह के भीतर एकल दस्तावेज़ को अपडेट करता है।updateMany()
:एक संग्रह के भीतर कई दस्तावेज़ों को अपडेट करता है जो प्रदान किए गए फ़िल्टर से मेल खाते हैं।replaceOne()
:दिए गए फ़िल्टर के आधार पर पूरे दस्तावेज़ को संग्रह में बदल देता है।
हम अलग-अलग प्रकार के अपडेट करने के लिए इनमें से प्रत्येक किस्म का उपयोग करने का तरीका कवर करेंगे।
अपडेट ऑपरेटर
इससे पहले कि हम दस्तावेज़ों को अद्यतन करने के प्रत्येक तरीके पर एक नज़र डालें, हमें उपलब्ध कुछ अद्यतन ऑपरेटरों पर जाना चाहिए।
$currentDate
:किसी फ़ील्ड के मान को वर्तमान दिनांक पर सेट करता है, या तो दिनांक या टाइमस्टैम्प प्रकार के रूप में।- सिंटैक्स:
{ $currentDate: { <field>: <type>, ... } }
- सिंटैक्स:
$inc
:किसी फ़ील्ड के मान को एक निर्धारित राशि से बढ़ाता है।- वाक्यविन्यास:
{ $inc: { <field>: <amount>, ... } }
- वाक्यविन्यास:
$min
:यदि निर्दिष्ट मान वर्तमान मान से कम है तो फ़ील्ड का मान अपडेट करता है।- वाक्यविन्यास:
{ $min: { <field>: <value>, ... } }
- वाक्यविन्यास:
$max
:यदि निर्दिष्ट मान वर्तमान मान से अधिक है तो फ़ील्ड का मान अपडेट करता है।- वाक्यविन्यास:
{ $max: { <field>: <value>, ... } }
- वाक्यविन्यास:
$mul
:किसी फ़ील्ड के मान को दी गई संख्या से गुणा करके अपडेट करता है।- वाक्यविन्यास:
{ $mul: { <field>: <value>, ... } }
- वाक्यविन्यास:
$rename
:फ़ील्ड नाम का नाम बदलकर नए पहचानकर्ता कर देता है।- सिंटैक्स:
{ $rename: { <field>: <new_name>, ... } }
- सिंटैक्स:
$set
:किसी फ़ील्ड के मान को दिए गए मान से बदल देता है।- वाक्यविन्यास:
{ $set: { <field>: value, ... } }
- वाक्यविन्यास:
$setOnInsert
:अपरर्ट ऑपरेशंस के दौरान, यदि कोई नया दस्तावेज़ बनाया जा रहा है तो फ़ील्ड का मान सेट करता है और अन्यथा कुछ नहीं करता है।- वाक्यविन्यास:
{ $setOnInsert: { <field>: <value>, ... } }
- वाक्यविन्यास:
$unset
:दस्तावेज़ से एक फ़ील्ड हटाता है।- सिंटैक्स:
{ $unset: { <field>: "", ... } }
- सिंटैक्स:
$
:क्वेरी को संतुष्ट करने वाले पहले सरणी तत्व के लिए प्लेसहोल्डर।- सिंटैक्स:
{ <update_operator>: {<array>.$: <value> } }
- सिंटैक्स:
$[]
:सभी सरणी तत्वों के लिए एक प्लेसहोल्डर जो क्वेरी को संतुष्ट करता है।- सिंटैक्स:
{ <update_operator>: { <array>.$[]: <value> } }
- सिंटैक्स:
$addToSet
:सरणी में मान जोड़ता है जब तक कि वे पहले से मौजूद न हों।- सिंटैक्स:
{ $addToSet: { <field>: <value>, ... } }
- सिंटैक्स:
$pop
:किसी सरणी के पहले या अंतिम तत्व को हटाता है।- वाक्यविन्यास:
{ $pop: { <field>: (-1 or 1), ... } }
- वाक्यविन्यास:
$pull
:किसी शर्त से मेल खाने वाले सरणी के सभी तत्वों को हटा देता है।- वाक्यविन्यास:
{ $pull: { <field>: <condition>, ... } }
- वाक्यविन्यास:
$push
:किसी सरणी में मान जोड़ता है।- वाक्यविन्यास:
{ $push: { <field>: <value>, ... } }
- वाक्यविन्यास:
$pullAll
:एक सरणी से सभी निर्दिष्ट तत्वों को हटा देता है।- सिंटैक्स:
{ $pullAll: { <field>: [ <value>, ... ], ...} }
- सिंटैक्स:
$each
:संशोधित करता है$addToSet
और$push
ऑपरेटर ताकि वे एक सरणी के बजाय एक सरणी के प्रत्येक तत्व को एक तत्व के रूप में जोड़ सकें।- सिंटैक्स:
{ <update_operator>: { <field>: { $each: [ <value>, ... ] }, ... } }
- सिंटैक्स:
$position
:$each
. के साथ प्रयोग किया जाता है और स्थिति निर्दिष्ट करता है$push
ऑपरेटर को यहां सम्मिलित करना चाहिए।- वाक्यविन्यास:
{ $push: { <field>: { $each: [ <value>, ... ], $position: <num> } } }
- वाक्यविन्यास:
$slice
:$each
. के साथ प्रयोग किया जाता है और$push
सरणी में कुल तत्वों की संख्या को सीमित करने के लिए।- सिंटैक्स:
{ $push: { <field>: { $each: [ <value>, ... ], $slice: <num> } } }
- सिंटैक्स:
$sort
:$each
. के साथ प्रयोग किया जाता है और$push
सरणी तत्वों को सॉर्ट करने के लिए।- सिंटैक्स:
{ $push: { <field>: { $each: [ <value>, ... ], $sort: <sort_order> } } }
- सिंटैक्स:
ये विभिन्न अपडेट ऑपरेटर आपको अपने दस्तावेज़ों के विभिन्न क्षेत्रों को अलग-अलग तरीकों से अपडेट करने की अनुमति देते हैं।
एक संग्रह में एक दस्तावेज़ को अपडेट करना
MongoDB का updateOne()
संग्रह के भीतर एकल दस्तावेज़ को अद्यतन करने के लिए विधि का उपयोग किया जाता है। विधि में दो आवश्यक तर्कों के साथ-साथ वैकल्पिक तर्कों को निर्दिष्ट करने वाला एक दस्तावेज़ भी शामिल है।
पहला तर्क एक दस्तावेज़ है जो फ़िल्टर शर्तों को निर्दिष्ट करता है जिसका उपयोग दस्तावेज़ों का चयन करने के लिए किया जाएगा। चूंकि updateOne()
विधि संग्रह में अधिकतम एक दस्तावेज़ को संशोधित करती है, फ़िल्टर शर्तों को पूरा करने वाले पहले दस्तावेज़ का उपयोग किया जाएगा।
दूसरा तर्क अद्यतन कार्रवाई को निर्दिष्ट करता है जिसे निष्पादित किया जाना चाहिए। मिलान किए गए दस्तावेज़ की सामग्री को बदलने के लिए ऊपर दिए गए अद्यतन संचालन को यहां निर्दिष्ट किया जा सकता है।
तीसरा तर्क विधि के व्यवहार को संशोधित करने के लिए विभिन्न विकल्पों का एक दस्तावेज है। सबसे महत्वपूर्ण संभावित मूल्य हैं:
upsert
:यदि फ़िल्टर किसी मौजूदा दस्तावेज़ से मेल नहीं खाता है, तो एक नया दस्तावेज़ सम्मिलित करके ऑपरेशन को एक अपरर्ट प्रक्रिया में बदल देता है।collation
:एक दस्तावेज़ जो भाषा-विशिष्ट नियमों को परिभाषित करता है जो ऑपरेशन के लिए लागू होना चाहिए।
उदाहरण के तौर पर, हम एक एकल छात्र रिकॉर्ड को अपडेट कर सकते हैं जिसे हम _id
. द्वारा फ़िल्टर करते हैं यह सुनिश्चित करने के लिए कि हम सही दस्तावेज़ को लक्षित करते हैं। हम grade_level
. सेट कर सकते हैं एक नए मान के लिए:
db.students.updateOne( { _id: ObjectId("60e8792d4655cbf49ff7cb89") }, { $set: { grade_level: 3 } })
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
एक संग्रह में एक से अधिक दस्तावेज़ों को अपडेट करना
MongoDB का updateMany()
विधि updateOne()
के समान काम करती है विधि, लेकिन इसके बजाय किसी भी दस्तावेज़ को अपडेट करता है जो पहले मैच के बाद रुकने के बजाय दिए गए फ़िल्टर से मेल खाता है।
updateMany()
सिंटैक्स बिल्कुल updateOne()
. का अनुसरण करता है सिंटैक्स, इसलिए केवल अंतर ऑपरेशन के दायरे का है।
एक उदाहरण के रूप में, यदि हम subjects
में "रचना" के सभी उदाहरणों को "लेखन" में बदलना चाहते हैं हमारे teachers
में सरणी संग्रह दस्तावेज़, हम कुछ इस तरह उपयोग कर सकते हैं:
db.teachers.updateMany( { subject: "composition" }, { $set: { "subjects.$": "writing" } })
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
यदि आप दस्तावेजों की जांच करते हैं, तो "रचना" के प्रत्येक उदाहरण को "लेखन" से बदल दिया जाना चाहिए:
db.teachers.find()
{ "_id" : ObjectId("60eddca65eb74f5c676f3baa"), "first_name" : "Nancy", "last_name" : "Smith", "subjects" : [ "vocabulary", "pronunciation" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bab"), "first_name" : "Ronald", "last_name" : "Taft", "subjects" : [ "literature", "grammar", "writing" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bac"), "first_name" : "Casey", "last_name" : "Meyers", "subjects" : [ "literature", "writing", "grammar" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bad"), "first_name" : "Rebecca", "last_name" : "Carrie", "subjects" : [ "grammar", "literature" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bae"), "first_name" : "Sophie", "last_name" : "Daggs", "subjects" : [ "literature", "writing", "grammar", "vocabulary", "pronunciation" ] }
दस्तावेज़ बदलना
replaceOne()
विधि updateOne()
के समान काम करती है विधि, लेकिन अलग-अलग फ़ील्ड को अपडेट करने के बजाय पूरे दस्तावेज़ को बदल देती है। वाक्य रचना पिछले दो आदेशों के समान है।
उदाहरण के लिए, यदि नैन्सी स्मिथ आपका स्कूल छोड़ देती है और आप उसकी जगह क्लारा न्यूमैन नाम की एक शिक्षिका से ले लेते हैं जो साहित्य पढ़ाती है, तो आप निम्न टाइप कर सकते हैं:
db.teachers.replaceOne( { $and: [ { first_name: "Nancy" }, { last_name: "Smith" } ] }, { first_name: "Clara", last_name: "Newman", subjects: [ "literature" ] })
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
आप देख सकते हैं कि मेल खाने वाले दस्तावेज़ को हटा दिया गया है और निर्दिष्ट दस्तावेज़ ने इसे बदल दिया है:
db.teachers.find()
{ "_id" : ObjectId("60eddca65eb74f5c676f3baa"), "first_name" : "Clara", "last_name" : "Newman", "subjects" : [ "literature" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bab"), "first_name" : "Ronald", "last_name" : "Taft", "subjects" : [ "literature", "grammar", "writing" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bac"), "first_name" : "Casey", "last_name" : "Meyers", "subjects" : [ "literature", "writing", "grammar" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bad"), "first_name" : "Rebecca", "last_name" : "Carrie", "subjects" : [ "grammar", "literature" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bae"), "first_name" : "Sophie", "last_name" : "Daggs", "subjects" : [ "literature", "writing", "grammar", "vocabulary", "pronunciation" ] }
दस्तावेज़ कैसे हटाएं
संग्रह से दस्तावेज़ निकालना भी दस्तावेज़ के जीवन चक्र का हिस्सा है। किसी दस्तावेज़ को निकालने के लिए, आप deleteOne()
. का उपयोग कर सकते हैं या deleteMany()
तरीके। उनके पास एक ही सिंटैक्स है, और वे केवल कितने दस्तावेज़ों पर काम करते हैं, इसमें अंतर है।
अधिकांश भाग के लिए, आपको इन विधियों में से किसी एक के साथ दस्तावेज़ों को हटाने के लिए केवल एक फ़िल्टर दस्तावेज़ प्रदान करना है जो निर्दिष्ट करता है कि आप हटाए जाने वाले दस्तावेज़ का चयन कैसे करना चाहते हैं। deleteOne()
विधि अधिकतम एक दस्तावेज़ को हटा देगी (चाहे फ़िल्टर कितने भी मेल खाता हो) जबकि deleteMany()
विधि फ़िल्टर शर्तों से मेल खाने वाले प्रत्येक दस्तावेज़ को हटा देती है।
उदाहरण के लिए, किसी एकल छात्र को हटाने के लिए, आप एक _id
. प्रदान कर सकते हैं उनका स्पष्ट रूप से मिलान करने के लिए:
db.students.deleteOne({ _id: ObjectId("60e8792d4655cbf49ff7cb87")})
{ "acknowledged" : true, "deletedCount" : 1 }
यदि हम किसी ऐसे छात्र को हटाना चाहते हैं जिसके पास ग्रेड स्तर निर्दिष्ट नहीं है, तो हम deleteMany()
का उपयोग कर सकते हैं। इसके बजाय विधि:
db.students.deleteMany({ grade_level: { $eq: null }})
{ "acknowledged" : true, "deletedCount" : 2 }
यदि हम जाँच करते हैं, तो हमें यह देखना चाहिए कि शेष सभी छात्रों के पास एक ग्रेड स्तर असाइन किया गया है:
db.students.find()
{ "_id" : ObjectId("60e8743b4655cbf49ff7cb83"), "first_name" : "Ashley", "last_name" : "Jenkins", "dob" : ISODate("2003-01-08T00:00:00Z"), "grade_level" : 8 }{ "_id" : ObjectId("60e875d54655cbf49ff7cb84"), "first_name" : "Brian", "last_name" : "McMantis", "dob" : ISODate("2010-09-18T00:00:00Z"), "grade_level" : 2 }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb88"), "first_name" : "Michael", "last_name" : "Rodgers", "dob" : ISODate("2008-02-25T00:00:00Z"), "grade_level" : 6 }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler", "grade_level" : 3 }
निष्कर्ष
दस्तावेज़ बनाना, क्वेरी करना, अपडेट करना और निकालना सीखना आपको दैनिक आधार पर MongoDB के भीतर दस्तावेज़ों को प्रभावी ढंग से प्रबंधित करने के लिए आवश्यक कौशल प्रदान करता है। विभिन्न दस्तावेज़ और संग्रह विधियों और ऑपरेटरों से परिचित होने से आपको जानकारी का मिलान और संशोधन करने की अनुमति मिलती है, जिससे आप जटिल विचार व्यक्त कर सकते हैं जिसे डेटाबेस सिस्टम समझ सकता है।