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

MongoDB में कॉलम के उच्चतम संख्यात्मक मान को ढूंढना ($not $type)

मिश्रित प्रकारों को संभालना: केवल संख्यात्मक मानों पर अधिकतम

यदि किसी फील्ड में मिश्रित प्रकार के मान हैं (संख्या और स्ट्रिंग), और आप **केवल संख्यात्मक मानों** में से उच्चतम मान ढूंढना चाहते हैं, तो $not के साथ $type का उपयोग करके गैर-संख्यात्मक मानों को बाहर करें, फिर क्रमबद्ध करें और सीमित करें।

उदाहरण: मिश्रित प्रकारों के साथ डेटा डालना

> db.highestNumericValueOfAColumnDemo.insertOne({"StudentName":"John","StudentMathMarks":69});
{ "acknowledged" : true, "insertedId" : ObjectId("5cba05727219729fde21ddb1") }
> db.highestNumericValueOfAColumnDemo.insertOne({"StudentName":"Carol","StudentMathMarks":"89"}); // स्ट्रिंग
{ "acknowledged" : true, "insertedId" : ObjectId("5cba059d7219729fde21ddb2") }
> db.highestNumericValueOfAColumnDemo.insertOne({"StudentName":"Chris","StudentMathMarks":82});
{ "acknowledged" : true, "insertedId" : ObjectId("5cba059d7219729fde21ddb3") }
> db.highestNumericValueOfAColumnDemo.insertOne({"StudentName":"John","StudentMathMarks":"100"}); // स्ट्रिंग
{ "acknowledged" : true, "insertedId" : ObjectId("5cba059d7219729fde21ddb4") }

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

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

आउटपुट:


क्वेरी: केवल संख्यात्मक (डबल/इंट) मानों पर अधिकतम ढूंढना

> db.highestNumericValueOfAColumnDemo.find({StudentMathMarks: {$not: {$type: 2}}}).sort({StudentMathMarks: -1}).limit(1).pretty();

आउटपुट:


व्याख्या:

  • {$type: 2} BSON टाइप **String** (टाइप नंबर 2) से मेल खाता है।
  • {$not: {$type: 2}} का अर्थ है "स्ट्रिंग **नहीं**" (यानी संख्या, डबल, इंट, आदि)।
  • .sort({StudentMathMarks: -1}) अवरोही क्रम में क्रमबद्ध करता है।
  • .limit(1) शीर्ष 1 लेता है।

परिणाम: स्ट्रिंग मान "89" और "100" को अनदेखा कर दिया जाता है। संख्यात्मक मानों में उच्चतम 82 (Chris) है।

बेहतर दृष्टिकोण (MongoDB 3.6+): $type स्ट्रिंग नाम स्वीकार करता है: {$not: {$type: "string"}} अधिक पठनीय है।

  1. - MySQL कॉलम का nth उच्चतम मान कैसे खोजें?

    ORDER BY DESC और LIMIT का उपयोग करें कॉलम का nth उच्चतम मान खोजने के लिए, अवरोही क्रम में क्रमबद्ध करें और LIMIT offset, 1 का उपयोग करें। सिंटैक्स पैटर्न पहला उच्चतम: ORDER BY col DESC LIMIT 1 दूसरा उच्चतम: ORDER BY col DESC LIMIT 1, 1 चौथा उच्चतम: ORDER BY col DESC LIMIT 3, 1 nth उच्चतम: ORDER B

  1. - MySQL में LIMIT OFFSET का उपयोग करके कॉलम में nth सबसे बड़ा मान कैसे खोजें

    LIMIT और OFFSET के साथ nth उच्चतम मान प्राप्त करना कॉलम में nth उच्चतम मान प्राप्त करने के लिए LIMIT ... OFFSET का उपयोग करें। OFFSET का उपयोग मानों को छोड़ने (स्किप) के लिए किया जाता है। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( Value INT ); रिकॉर्ड्स इन्सर्ट करें: mysql>

  1. - MySQL में किसी कॉलम में अधिकतम मान खोजना

    किसी कॉलम में अधिकतम मान खोजने के लिए MAX(columnName) का उपयोग करना होगा। लेकिन, पहले, हम MySQL में डेटाबेस और टेबल के बारे में समझेंगे। MySQL इंस्टॉल करने से पहले, यह निर्धारित करना महत्वपूर्ण है कि किस संस्करण और किस डिस्ट्रीब्यूशन फॉर्मेट (यह बाइनरी फाइल या सोर्स फाइलों से हो सकता है) का उपयोग