MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB में पुश ऑपरेशंस

1. अवलोकन

इस ट्यूटोरियल में, हम परिचय देंगे कि MongoDB में एक सरणी में दस्तावेज़ कैसे सम्मिलित करें। इसके अतिरिक्त, हम $push और . के विभिन्न अनुप्रयोग देखेंगे $addToset सरणी में मान जोड़ने के लिए ऑपरेटर।

सबसे पहले, हम एक नमूना डेटाबेस, एक संग्रह बनाएंगे, और उसमें डमी डेटा डालेंगे। इसके अलावा, हम $push . का उपयोग करके किसी दस्तावेज़ को अपडेट करने के लिए कुछ बुनियादी उदाहरणों पर गौर करेंगे ऑपरेटर। बाद में, हम $push . के विभिन्न उपयोग मामलों पर भी चर्चा करेंगे और $addtoSet ऑपरेटरों।

आइए MongoDB में एक सरणी में दस्तावेज़ सम्मिलित करने के लिए विभिन्न विधियों में गहराई से गोता लगाएँ।

2. डेटाबेस इनिशियलाइज़ेशन

सबसे पहले, चलिए एक नया डेटाबेस सेट करते हैं baeldung और एक नमूना संग्रह, आदेश :

use baeldung;
db.createCollection(orders);

आइए अब insertMany . का उपयोग करके संग्रह में कुछ दस्तावेज़ जोड़ें विधि:

db.orders.insertMany([
    {
        "customerId": 1023,
        "orderTimestamp": NumberLong("1646460073000"),
        "shippingDestination": "336, Street No.1 Pawai Mumbai",
        "purchaseOrder": 1000,
        "contactNumber":"9898987676",
        "items": [ 
            {
                "itemName": "BERGER",
                "quantity": 1,
                "price": 500
            },
            {
                "itemName": "VEG PIZZA",
                "quantity": 1,
                "price": 800
            } 
          ]
    },
    {
        "customerId": 1027,
        "orderTimestamp": NumberLong("1646460087000"),
        "shippingDestination": "445, Street No.2 Pawai Mumbai",
        "purchaseOrder": 2000,
        "contactNumber":"9898987676",
        "items": [ 
            {
               "itemName": "BERGER",
               "quantity": 1,
               "price": 500
            },
            {
               "itemName": "NON-VEG PIZZA",
               "quantity": 1,
               "price": 1200
            } 
          ]
    }
]);

सफल इंसर्शन के मामले में, उपरोक्त कमांड नीचे दिखाए गए के समान एक JSON प्रिंट करेगा:

{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("622300cc85e943405d04b567"),
	ObjectId("622300cc85e943405d04b568")
    ]
}

अब तक, हमने सफलतापूर्वक डेटाबेस और संग्रह स्थापित किया है। हम सभी उदाहरणों के लिए इस डेटाबेस और संग्रह का उपयोग करेंगे।

3. मोंगो क्वेरी का उपयोग करके पुश ऑपरेशन

MongoDB, MongoDB दस्तावेज़ों में सरणियों को अद्यतन करने के लिए विभिन्न प्रकार के सरणी ऑपरेटर प्रदान करता है। $पुश MongoDB में ऑपरेटर सरणी के अंत में मान जोड़ता है। क्वेरी के प्रकार के आधार पर, हम $पुश . का उपयोग कर सकते हैं updateOne . जैसी विधियों वाला ऑपरेटर , कई अपडेट करें , findAndModify , आदि.

आइए अब $push . का उपयोग करके शेल क्वेरी को देखें ऑपरेटर:

db.orders.updateOne(
    {
        "customerId": 1023
    },
    {
        $push: {
            "items":{
                "itemName": "PIZZA MANIA",
                "quantity": 1,
                "price": 800
            }
        }
    });

उपरोक्त क्वेरी निम्नलिखित दस्तावेज़ लौटाएगी:

{
    "acknowledged":true,
    "matchedCount":1,
    "modifiedCount":1
}

आइए अब customerId  . के साथ दस्तावेज़ की जाँच करें 1023. यहां, हम देख सकते हैं कि सूची के अंत में नया आइटम डाला गया है "आइटम ":

{
    "customerId" : 1023,
    "orderTimestamp" : NumberLong("1646460073000"),
    "shippingDestination" : "336, Street No.1 Pawai Mumbai",
    "purchaseOrder" : 1000,
    "contactNumber" : "9898987676",
    "items" : [
        {
            "itemName" : "BERGER",
            "quantity" : 1,
	    "price" : 500
        },
	{
            "itemName" : "VEG PIZZA",
	    "quantity" : 1,
	    "price" : 800
	},
	{
	    "itemName" : "PIZZA MANIA",
	    "quantity" : 1,
	    "price" : 800
        }
    ]
}

4. जावा ड्राइवर कोड का उपयोग करके पुश ऑपरेशन

अब तक, हमने दस्तावेज़ को एक सरणी में धकेलने के लिए MongoDB शेल क्वेरी पर चर्चा की है। आइए अब जावा कोड का उपयोग करके पुश अपडेट क्वेरी को लागू करें।

अपडेट कार्रवाई करने से पहले, आइए पहले आदेश . से कनेक्ट करें बेल्डुंग . में संग्रह डेटाबेस:

mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("baeldung");
MongoCollection<Document> collection = database.getCollection("orders");

यहाँ, इस मामले में, हम MongoDB से जुड़ रहे हैं जो लोकलहोस्ट पर डिफ़ॉल्ट पोर्ट 27017 पर चल रहा है।

4.1. DBObject . का उपयोग करना

MongoDB जावा ड्राइवर DBObject . दोनों का समर्थन प्रदान करता है और बीएसओएन दस्तावेज़। यहाँ, DBObject MongoDB लीगेसी ड्राइवर का हिस्सा है, लेकिन इसे MongoDB के नए संस्करण में हटा दिया गया है।

आइए अब सरणी में नए मान डालने के लिए जावा ड्राइवर कोड देखें:

DBObject listItem = new BasicDBObject("items", new BasicDBObject("itemName", "PIZZA MANIA")
  .append("quantity", 1)
  .append("price", 800));
BasicDBObject searchFilter = new BasicDBObject("customerId", 1023);
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.append("$push", listItem);
UpdateResult updateResult = collection.updateOne(searchFilter, updateQuery);

उपरोक्त क्वेरी में, हमने सबसे पहले BasicDBObject . का उपयोग करके आइटम दस्तावेज़ बनाया है . searchQuery, . के आधार पर संग्रह के दस्तावेज़ों को फ़िल्टर किया जाएगा, और मानों को सरणी में धकेल दिया जाएगा।

4.2. बीएसओएन . का उपयोग करना दस्तावेज़

बीएसओएन दस्तावेज़ जावा में MongoDB दस्तावेज़ तक पहुँचने का नया तरीका है जो नए क्लाइंट स्टैक के साथ बनाया गया है। org.bson.Document वर्ग कम जटिल और उपयोग में आसान है।

आइए org.bson.Document  . का उपयोग करें सरणी "आइटम" . में मानों को पुश करने के लिए वर्ग :

Document item = new Document()
  .append("itemName1", "PIZZA MANIA")
  .append("quantity", 1).append("price", 800);
UpdateResult updateResult = collection.updateOne(Filters.eq("customerId", 1023), Updates.push("items", item));

इस मामले में, बीएसओएन . का कार्यान्वयन DBObject, . का उपयोग करके चलाए जा रहे कोड के समान है और अपडेशन भी वही होगा। यहां, हमने updateOne . का उपयोग किया है केवल एक दस्तावेज़ को अद्यतन करने की विधि।

5. addToSet . का उपयोग करना संचालिका

$addToSet ऑपरेटर का उपयोग सरणी में किसी मान को पुश करने के लिए भी किया जा सकता है। यह ऑपरेटर केवल तभी मान जोड़ता है जब वह मान सरणी में मौजूद न हो। अन्यथा, यह सिर्फ इसे अनदेखा कर देगा। जबकि पुश ऑपरेटर मैच प्राप्त करने के लिए फ़िल्टर की शर्त के रूप में मान को धक्का देगा।

ध्यान देने योग्य एक महत्वपूर्ण बिंदु है $addToSet डुप्लिकेट आइटम के मामले में ऑपरेटर मूल्य कार्य को आगे नहीं बढ़ाता है। दूसरी ओर, $पुश ऑपरेटर किसी भी अन्य स्थिति के बावजूद मान को केवल सरणी में धकेलता है।

5.1. addToSet . का उपयोग करके शेल क्वेरी संचालिका

$addToSet . की मोंगो शेल क्वेरी ऑपरेटर $पुश . के समान है ऑपरेटर, लेकिन $addToSet सरणी में डुप्लिकेट मान सम्मिलित नहीं करता है।

आइए अब $addToset का उपयोग करके मानों को एक सरणी में धकेलने के लिए MongoDB क्वेरी देखें। :

db.orders.updateOne(
    {
        "customerId": 1023
    },
    {
        $addToSet: {
            "items":{
                "itemName": "PASTA",
                "quantity": 1,
                "price": 1000
            }
        }
    });

इस मामले में, आउटपुट इस प्रकार होगा:

{
    "acknowledged":true,
    "matchedCount":1,
    "modifiedCount":1
}

इस मामले में, हमने $addToSet . का उपयोग किया ऑपरेटर, और दस्तावेज़ को केवल "आइटम" सरणी में धकेल दिया जाएगा यदि यह अद्वितीय है।

5.2. जावा ड्राइवर addToSet का उपयोग कर रहा है संचालिका

$addToSet पुश ऑपरेटर की तुलना में ऑपरेटर एक अलग प्रकार का ऐरे अपडेट ऑपरेशन प्रदान करता है:

Document item = new Document()
  .append("itemName1", "PIZZA MANIA")
  .append("quantity", 1).append("price", 800);
UpdateResult updateResult = collection
  .updateOne(Filters.eq("customerId", 1023), Updates.addToSet("items", item));
System.out.println("updateResult:- " + updateResult);

उपरोक्त कोड में, सबसे पहले, हमने “आइटम . दस्तावेज़ बनाया है “, और customerId . के आधार पर फ़िल्टर, अपडेटवन विधि दस्तावेज़ को पुश करने का प्रयास करेगी “आइटम सरणी में "आइटम ".


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB कैसे स्थापित करें

  2. MongoDB को उत्पादन में लाना

  3. MongoDB प्रतिकृति सेट के लिए SELinux को कैसे कॉन्फ़िगर करें

  4. मोंगोडब जावा ड्राइवर के साथ खोजने के बाद गिनती ऑपरेशन कैसे कॉल करें?

  5. नोएसक्यूएल के लिए मामलों का प्रयोग करें