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

MongoDB एग्रीगेशन में $cond का उपयोग करके फ़ील्ड उपस्थिति के आधार पर शर्ती प्रोजेक्शन

MongoDB एग्रीगेशन में $cond और $anyElementTrue के साथ शर्ती फ़ील्ड

$cond अभिव्यक्ति यदि-अन्यथा लॉजिक लागू करती है। $anyElementTrue के साथ संयोजित करके आप फ़ील्ड की उपस्थिति/अनुपस्थिति के आधार पर शर्ती मान सेट कर सकते हैं।

सैंपल डेटा बनाना

> db.presenceDemo.insertOne({"StudentName":null});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06f70c25ddae1f53b621f3") }
> db.presenceDemo.insertOne({"StudentName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06f71425ddae1f53b621f4") }
> db.presenceDemo.insertOne({"StudentName":null});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06f71825ddae1f53b621f5") }
> db.presenceDemo.insertOne({"StudentName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06f71e25ddae1f53b621f6") }

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

> db.presenceDemo.find();

आउटपुट:


एग्रीगेशन: फ़ील्ड उपस्थिति के आधार पर MyValue सेट करें

> db.presenceDemo.aggregate([
    { "$project": {
        "MyValue": {
            "$cond": [
                { "$anyElementTrue": [ [ "$StudentName" ] ] },
                1,
                0
            ]
        }
    }}
]);

आउटपुट:


कैसे काम करता है

  1. [ "$StudentName" ] - फ़ील्ड मान को ऐरे में लपेटता है
  2. $anyElementTrue - ऐरे में कम से कम एक "सच्चा" मान जांचता है
  3. MongoDB में "झूठे" मान: false, null, 0, undefined, NaN, "" (खाली स्ट्रिंग)
  4. $cond - यदि सच्चा तो 1, अन्यथा 0 लौटाता है

व्यवहार तालिका

StudentName मान$anyElementTrue परिणामMyValue
nullfalse0
"Chris"true1
"" (खाली स्ट्रिंग)false0
0false0
[] (खाली ऐरे)false0

बेहतर विकल्प: $ifNull (MongoDB 3.2+)


फ़ील्ड अनुपस्थिति जांचने के लिए

            
  1. - MongoDB कलेक्शन के सभी दस्तावेजों में नया फील्ड जोड़ें

    नया फील्ड जोड़ने के लिए, MongoDB में $addFields का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo712.insertOne({Name:John}); { acknowledged : true, insertedId : ObjectId(5ea85f675d33e20ed1097b82) } > db.demo712.insertOne({Name:Chris}); { acknowledged : true, insertedId : Ob

  1. - MongoDB क्वेरी: फील्ड के रिटर्निंग वैल्यूज को लिमिट करें

    इसके लिए $slice का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo594.insertOne({ id:1, details:[ {Name:Chris,Age:21}, {Name:Bob,Age:20}, {Name:David,Age:23}, {Name:Sam,Age:22} ] }); { acknowledged : true, insertedId : ObjectId(5e9334

  1. - MongoDB में किसी फ़ील्ड के सभी मानों को विशिष्ट स्ट्रिंग से अपडेट करना

    कलेक्शन के सभी दस्तावेज़ों में किसी फ़ील्ड का मान बदलने के लिए update() के साथ multi: true (या नए वर्जन में updateMany()) का उपयोग करें। डेमो डेटा > db.demo720.insertOne({SubjectName:MySQL}); > db.demo720.insertOne({SubjectName:Java}); > db.demo720.insertOne({SubjectName:C}); > db.demo7