Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में संख्या कुंजियों वाले ऑब्जेक्ट में मान खोजें

संख्यात्मक कुंजियों वाले ऑब्जेक्ट में मान खोजना

जब ऑब्जेक्ट की कुंजियाँ संख्याएँ हों (जैसे "101", "1001"), तो $where ऑपरेटर का उपयोग करके मान खोजें।

कलेक्शन बनाना

> db.demo268.insertOne(
    {
        "details": {
            "101": "John",
            "1001": "Bob"
        }
    }
);
{ "acknowledged": true, "insertedId": ObjectId("5e4816141627c0c63e7dbaaf") }

डॉक्यूमेंट देखना

> db.demo268.find();
{ "_id": ObjectId("5e4816141627c0c63e7dbaaf"), "details": { "101": "John", "1001": "Bob" } }

$where क्वेरी

> db.demo268.find({ $where:
    function() {
        for (var k in this.details) {
            if (this.details[k] == "Bob") {
                return true;
            }
        }
    }
})

परिणाम

{ "_id": ObjectId("5e4816141627c0c63e7dbaaf"), "details": { "101": "John", "1001": "Bob" } }

व्याख्या

  • $where: जावास्क्रिप्ट फंक्शन चलाकर कस्टम क्वेरी लॉजिक लागू करता है
  • for...in लूप: ऑब्जेक्ट की सभी कुंजियों पर पुनरावृति करता है
  • this.details[k]: प्रत्येक कुंजी के मान तक पहुँचता है
  • जब मान "Bob" मिलता है, तो true लौटाता है और डॉक्यूमेंट शामिल होता है

सावधानी

$where जावास्क्रिप्ट निष्पादित करता है, जो धीमा हो सकता है और इंडेक्स का उपयोग नहीं करता। बड़े डेटासेट के लिए, स्कीमा डिज़ाइन पर पुनर्विचार करें या $objectToArray (MongoDB 3.6+) जैसे ऑपरेटर्स का उपयोग करें।

  1. - MongoDB में सरणी ऑब्जेक्ट के साथ सरणी तत्व के मान को बढ़ाएं

    सरणी ऑब्जेक्ट के मान को बढ़ाने के लिए, $inc का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: >db.demo506.insertOne({details:[{id:1,Quantity:4},{id:2,Quantity:3},{id:3,Quantity:2},{id:4,Quantity:7}]}); { acknowledged : true, insertedId : ObjectId(5e882ed6987b6e0e9d18f576) } find() मेथड की मद

  1. - MongoDB में रेगुलर एक्सप्रेशन के साथ टेक्स्ट खोज

    MongoDB में रेगुलर एक्सप्रेशन के साथ टेक्स्ट खोज के लिए, $regex का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo519.insertOne({Value:50,60,70}); { acknowledged : true, insertedId : ObjectId(5e88b9c0b3fbf26334ef6111) } > db.demo519.insertOne({Value:80,90,50}); { acknowledged : t

  1. - MongoDB में केस-इनसेंसिटिव खोज

    केस-इनसेंसिटिव खोज के लिए, find() मेथड में regex का उपयोग करें। सिंटैक्स निम्न है: db.demo572.find({yourFieldName : { $regex:/^yourValue$/i}}); उपरोक्त सिंटैक्स को समझने के लिए, आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo572.insertOne({CountryName:US}); { acknowledged : true, insertedI