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

MongoDB में डॉट वाले कीज़ वाले रिकॉर्ड कैसे खोजें?

MongoDB में डॉट (.) वाले फील्ड नाम (कीज़) वाले दस्तावेज़ ढूंढने के लिए, एग्रीगेशन पाइपलाइन का उपयोग करें: $objectToArray → $filter साथ $indexOfBytes → $match।

उदाहरण: डॉट वाली कीज़ वाले दस्तावेज़

> db.demo364.insertOne({
    "details" : {
        "details1.otherdetails.Name" : {"FirstName":"Chris"}
    }
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57d485d0ada61456dc936d") }
> db.demo364.insertOne({
    "details" : {
        "details1.otherdetails.Name" : {"FirstName":"David"}
    }
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57d486d0ada61456dc936e") }

दस्तावेज़ देखना

> db.demo364.find();

आउटपुट: दो दस्तावेज़ जिनमें डॉट वाली नेस्टेड की है।

एग्रीगेशन: डॉट वाली कीज़ फ़िल्टर करें

> db.demo364.aggregate([
    {
        $addFields: {
            result: {
                $filter: {
                    input: { $objectToArray: "$details" },
                    cond: {
                        $ne: [
                            { $indexOfBytes: [ "$$this.k", "." ] },
                            -1
                        ]
                    }
                }
            }
        }
    },
    {
        $match: {
            $expr: {
                $ne: [ { $size: "$result" }, 0 ]
            }
        }
    },
    {
        $project: { result: 0 }
    }
])

परिणाम

दोनों दस्तावेज़ लौटाए जाते हैं क्योंकि उनमें डॉट वाली कीज़ हैं।

चरण व्याख्या

  1. $objectToArray: ऑब्जेक्ट को {k: <key>, v: <value>} ऑब्जेक्ट्स की सरणी में बदलता है।
  2. $filter + $indexOfBytes: उन कीज़ को रखता है जिनमें "." है (इंडेक्स ≠ -1)।
  3. $match + $size: केवल उन दस्तावेज़ों को रखता है जहां फ़िल्टर्ड सरणी गैर-खाली है।
  4. $project: अस्थायी result फील्ड को हटाता है।

चेतावनी

डॉट वाली कीज़ MongoDB में डॉट नोटेशन क्वेरी के साथ हस्तक्षेप कर सकती हैं। जहां संभव हो, उनसे बचें या एग्रीगेशन के साथ सावधानी से क्वेरी करें।

  1. - MongoDB Query - Specific FirstName और LastName वाले Documents Find करना

    Specific FirstName और LastName वाले documents find करने के लिए $and के साथ $in का उपयोग करें। MongoDB find() में implement करें। Collection बनाना > db.demo692.insertOne({FirstName:Chris,LastName:Brown}); { acknowledged : true, insertedId : ObjectId(5ea585dca7e81adc6a0b396a) } > db.demo692.ins

  1. - MongoDB में विशिष्ट मान से कम कीमत वाले रिकॉर्ड ढूंढें

    विशिष्ट मान से कम कीमत वाले रिकॉर्ड जांचने के लिए $lt का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo728.insertOne({Price:75}); { acknowledged : true, insertedId : ObjectId(5eab413c43417811278f589b) } > db.demo728.insertOne({Price:59}); { acknowledged : true, insertedId : ObjectId(5eab4140

  1. - MySQL में LIKE क्वेरी से % वर्ण वाले रिकॉर्ड कैसे खोजें?

    MySQL में LIKE से प्रतिशत चिह्न (%) वाले रिकॉर्ड खोजना चूँकि % LIKE में वाइल्डकार्ड है, इसे खोजने के लिए इसे एस्केप करना पड़ता है। टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable742 (Value VARCHAR(100)); Query OK, 0 rows affected (2.91 sec) mysql> INSERT INTO DemoTable742 VALUES(632535M