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

MongoDB क्वेरी: जहां सभी ऐरे आइटम्स एक निर्दिष्ट शर्त से कम हों?

MongoDB में $not और $gt के साथ ऐरे एलिमेंट्स को फ़िल्टर करना

उन डॉक्यूमेंट्स को खोजने के लिए जहां एक ऐरे में सभी** एलिमेंट्स एक शर्त को पूरा करते हैं (उदाहरण के लिए, सभी स्कोर ≤ 45), $not के साथ $gt का उपयोग करके किसी भी एलिमेंट के उल्लंघन को बाहर करें।

नमूना डेटा बनाना

> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[89,43,32,45]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9e9f9b50a6c6dd317adb3") }
> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[32,33,34,40]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9ea13b50a6c6dd317adb4") }
> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[45,56,66,69]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9ea25b50a6c6dd317adb5") }
> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[46,66,77,88]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9ea3cb50a6c6dd317adb6") }

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

> db.arrayElementsNotGreaterThanDemo.find().pretty();

आउटपुट:

{ "_id" : ObjectId("5cd9e9f9b50a6c6dd317adb3"), "Scores" : [ 89, 43, 32, 45 ] }
{ "_id" : ObjectId("5cd9ea13b50a6c6dd317adb4"), "Scores" : [ 32, 33, 34, 40 ] }
{ "_id" : ObjectId("5cd9ea25b50a6c6dd317adb5"), "Scores" : [ 45, 56, 66, 69 ] }
{ "_id" : ObjectId("5cd9ea3cb50a6c6dd317adb6"), "Scores" : [ 46, 66, 77, 88 ] }

क्वेरी: सभी स्कोर ≤ 45 (यानी, कोई भी स्कोर > 45 नहीं)

> db.arrayElementsNotGreaterThanDemo.find({ Scores: { $not: { $gt: 45 } } });

आउटपुट:

{ "_id" : ObjectId("5cd9ea13b50a6c6dd317adb4"), "Scores" : [ 32, 33, 34, 40 ] }

व्याख्या

  • { $gt: 45 } - किसी भी एलिमेंट से मेल खाता है जो 45 से बड़ा है।
  • $not - मिलान को नकारता है: उन डॉक्यूमेंट्स को चुनता है जहां कोई भी एलिमेंट 45 से बड़ा नहीं है।
  • परिणाम: केवल दूसरा डॉक्यूमेंट योग्य है (सभी स्कोर 32, 33, 34, 40 ≤ 45 हैं)।

वैकल्पिक दृष्टिकोण: $elemMatch के साथ $not

ऑब्जेक्ट्स के ऐरे के लिए, एक ही एलिमेंट पर मल्टीपल शर्तों को लागू करने के लिए $elemMatch का उपयोग करें। सरल ऐरे के लिए, ऊपर दिखाया गया $not: { $gt: ... } पैटर्न मानक है।

सामान्य पैटर्न: "सभी एलिमेंट्स शर्त को पूरा करते हैं"

शर्तक्वेरी पैटर्न
सभी एलिमेंट्स > 10{ arr: { $not: { $lte: 10 } } }
सभी एलिमेंट्स ≤ 100{ arr: { $not: { $gt: 100 } } }
सभी एलिमेंट्स 5 और 10 के बीच{ arr: { $not: { $or: [ { $lt: 5 }, { $gt: 10 } ] } } }
कोई एलिमेंट null नहीं{ arr: { $not: { $in: [null] } } }

मुख्य बिंदु

  • $not: { $gt: value } पैटर्न "सभी एलिमेंट्स ≤ value" को लागू करता है।
  • सरल मान ऐरे के लिए काम करता है (ऑब्जेक्ट्स के लिए नहीं)।
  • ऐरे फील्ड पर इंडेक्स इस क्वेरी पैटर्न का समर्थन कर सकते हैं।
  1. - MongoDB क्वेरी: उन सभी आयु रिकॉर्ड को लौटाएं जो इंटीजर हैं

    स्ट्रिंग और इंटीजर दोनों प्रकार के आयु रिकॉर्ड वाले दस्तावेज़ों से केवल इंटीजर आयु प्राप्त करने के लिए $type ऑपरेटर का उपयोग करें। MongoDB में $type उन दस्तावेज़ों का चयन करता है जहां फ़ील्ड का मान निर्दिष्ट BSON प्रकार का उदाहरण होता है। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo470.ins

  1. - MongoDB में सबडॉक्यूमेंट्स के ऐरे को कैसे क्वेरी करें?

    सबडॉक्यूमेंट्स के ऐरे को क्वेरी करने के लिए MongoDB में $unwind का उपयोग करें। नमूना डेटा बनाना (सबडॉक्यूमेंट्स ऐरे) db.demo499.insertOne({ details: [ { Name:MIT, Rank: 1, CountryName:US }, { Name:Stanford University, Rank: 2 }, { Name:University of California, Berkeley, Rank: 3 }

  1. - MySQL में CHAR_LENGTH से 4 अक्षर से कम वाले स्ट्रिंग्स खोजना

    MySQL में स्ट्रिंग कॉलम में अक्षरों की संख्या गिनकर 4 से कम लंबाई वाले स्ट्रिंग्स खोजने के लिए CHAR_LENGTH() फ़ंक्शन का उपयोग किया जाता है। यह बाइट्स नहीं, अक्षर गिनता है (मल्टी-बाइट कैरेक्टर सेट के लिए सही)। उदाहरण के लिए टेबल बनाना mysql> CREATE TABLE DemoTable (Name VARCHAR(100)); डेटा डालना