MongoDB एक संग्रह में दस्तावेज़ सम्मिलित करने के कई तरीके प्रदान करता है।
मोंगो शेल का उपयोग करते समय दस्तावेज़ों को संग्रह में सम्मिलित करने के 5 तरीके यहां दिए गए हैं।
द insertOne()
विधि
insertOne()
विधि संग्रह में एकल दस्तावेज़ सम्मिलित करती है।
इसका पूरा नाम है db.collection.insertOne()
, जहां collection
दस्तावेज़ को सम्मिलित करने के लिए संग्रह का नाम है।
यहां pets
. नामक संग्रह में दस्तावेज़ डालने का एक उदाहरण दिया गया है :
db.pets.insertOne( {
name: "Scratch",
type: "Cat"
} )
परिणाम:
{ "acknowledged" : true, "insertedId" : ObjectId("5fe2d15637b49e0faf1af214") }
db.collection.insertOne()
विधि एक दस्तावेज़ देता है जिसमें शामिल हैं:
- एक बूलियन
acknowledged
true
. के रूप में यदि ऑपरेशन लिखित चिंता याfalse
. के साथ चलता है अगर लेखन चिंता अक्षम थी। - एक फ़ील्ड
insertedId
_id
. के साथ सम्मिलित दस्तावेज़ का मूल्य।
insertMany()
विधि
insertMany()
विधि insertOne()
. के समान है , सिवाय इसके कि यह एक संग्रह में अनेक दस्तावेज़ सम्मिलित करता है।
साथ ही insertOne()
. के समान तरीके से , इसका पूरा नाम db.collection.insertMany()
है , जहां collection
दस्तावेज़ को सम्मिलित करने के लिए संग्रह का नाम है। यह इस आलेख में सूचीबद्ध सभी विधियों पर लागू होता है।
यहां db.collection.insertMany()
. का उपयोग करने का एक उदाहरण दिया गया है pets
. नामक संग्रह में अनेक दस्तावेज़ सम्मिलित करने के लिए :
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
परिणाम:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
db.collection.insertMany()
विधि एक दस्तावेज़ देता है जिसमें शामिल हैं:
- एक बूलियन
acknowledged
true
. के रूप में यदि ऑपरेशन लिखित चिंता याfalse
. के साथ चलता है अगर लेखन चिंता अक्षम थी। _id
की एक सरणी प्रत्येक सफलतापूर्वक डाले गए दस्तावेज़ के लिए मान।
द insert()
विधि
insert()
विधि insertOne()
. के संयोजन की तरह है और insertMany()
. यह आपको एक संग्रह में या तो एक दस्तावेज़, या एकाधिक दस्तावेज़ सम्मिलित करने में सक्षम बनाता है।
यहां db.collection.insert()
. का उपयोग करने का एक उदाहरण दिया गया है एकल दस्तावेज़ सम्मिलित करने के लिए:
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
परिणाम:
WriteResult({ "nInserted" : 1 })
जब एक ही दस्तावेज़ डाला जाता है, db.collection.insert()
एक WriteResult
देता है वस्तु। जब दस्तावेज़ों की एक सरणी डाली जाती है, तो यह एक BulkWriteResult
देता है वस्तु।
यहां db.collection.insert()
. का उपयोग करने का एक उदाहरण दिया गया है एकाधिक दस्तावेज़ सम्मिलित करने के लिए।
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
परिणाम:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
जैसा कि बताया गया है, एक BulkWriteResult
दस्तावेज़ों की एक सरणी डालने पर ऑब्जेक्ट वापस कर दिया जाता है।
द bulkWrite()
विधि
bulkWrite()
विधि आपको बल्क राइट ऑपरेशंस करने में सक्षम बनाती है।
दरअसल, insertMany()
पहले से ही बल्क इंसर्ट ऑपरेशन करता है। insert()
. के साथ भी ऐसा ही है दस्तावेज़ों की एक सरणी सम्मिलित करते समय। लेकिन bulkWrite()
आपको एक ही मेथड कॉल से बल्क इंसर्ट, अपडेट और ऑपरेशन निकालने में सक्षम बनाता है।
उदाहरण:
db.pets.bulkWrite([
{ insertOne: { "document": { "_id": 1, "name": "Bubbles", "type": "Fish" }}},
{ insertOne: { "document": { "_id": 2, "name": "Wag", "type": "Dog" }}},
{ updateOne : {
"filter" : { "_id" : 3 },
"update" : { $set : { "name" : "Fluffy", "type" : "Cat" } },
"upsert" : true
} },
{ replaceOne : {
"filter" : { "_id" : 4 },
"replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 },
"upsert" : true
} }
])
परिणाम:
{ "acknowledged" : true, "deletedCount" : 0, "insertedCount" : 2, "matchedCount" : 0, "upsertedCount" : 2, "insertedIds" : { "0" : 1, "1" : 2 }, "upsertedIds" : { "2" : 3, "3" : 4 } }
इस मामले में, संग्रह वास्तव में मौजूद नहीं था (मैंने इसे पिछले उदाहरण के बाद छोड़ दिया था), और इसलिए संग्रह के अंदर अब केवल वही दस्तावेज़ हैं जो इस उदाहरण में निर्दिष्ट हैं।
आइए संग्रह पर एक नज़र डालें।
db.pets.find()
परिणाम:
{ "_id" : 1, "name" : "Bubbles", "type" : "Fish" } { "_id" : 2, "name" : "Wag", "type" : "Dog" } { "_id" : 3, "name" : "Fluffy", "type" : "Cat" } { "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }
जैसी अपेक्षित थी, सभी चार दस्तावेज़ सम्मिलित किए गए थे।
अप्सर्ट ऑपरेशन
यह हमें MongoDB में एक संग्रह में दस्तावेजों को सम्मिलित करने के लिए हमारे पांचवें तरीके में लाता है - अप्सर्ट ऑपरेशन।
दस्तावेज़ सम्मिलित करने के लिए यह एक सशर्त विधि है। एक अप्सर्ट एक विकल्प है जिसका उपयोग आप अपडेट ऑपरेशंस पर कर सकते हैं। यह केवल एक नया दस्तावेज़ सम्मिलित करता है यदि निर्दिष्ट दस्तावेज़ पहले से मौजूद नहीं है। यदि यह मौजूद है, तो मूल दस्तावेज़ अपडेट किया जाता है (और कोई दस्तावेज़ सम्मिलित नहीं किया जाता है)।
हम अप्सर्ट के उदाहरण पहले ही देख चुके हैं। पिछले उदाहरण में, हमने निर्दिष्ट किया था "upsert" : true
updateOne
करते समय और replaceOne
संचालन। इसके परिणामस्वरूप दो दस्तावेज़ सम्मिलित किए गए, क्योंकि संग्रह में ऐसा कोई दस्तावेज़ नहीं था जो उनके फ़िल्टर मानदंड से मेल खाता हो।
यहाँ एक अप्सर्ट का एक और उदाहरण है। इस बार, हम इसका उपयोग updateOne()
. पर करेंगे विधि।
db.pets.updateOne(
{ name: "Harry" },
{ $set: { type: "Hamster" } },
{ upsert: true }
)
परिणाम:
{ "acknowledged" : true, "matchedCount" : 0, "modifiedCount" : 0, "upsertedId" : ObjectId("5fe3dc44d991410169410524") }
यहां, हम हैरी नामक सभी पालतू जानवरों को हम्सटर बनाना चाहते थे। लेकिन हैरी नाम का कोई पालतू जानवर नहीं था, इसलिए एक अपरर्ट किया गया।
निम्नलिखित विधियां upsert
स्वीकार करती हैं पैरामीटर:
update()
updateOne()
updateMany()
findAndModify()
findOneAndUpdate()
findOneAndReplace()
इसलिए, जब upsert: true
निर्दिष्ट किया गया है, तो ये विधियाँ एक गैर-मौजूद दस्तावेज़ को अद्यतन करने का प्रयास करते समय एक अपरर्ट ऑपरेशन करेंगी।