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 ] } }} ]);आउटपुट:
कैसे काम करता है
[ "$StudentName" ]- फ़ील्ड मान को ऐरे में लपेटता है$anyElementTrue- ऐरे में कम से कम एक "सच्चा" मान जांचता है- MongoDB में "झूठे" मान:
false,null,0,undefined,NaN,""(खाली स्ट्रिंग)$cond- यदि सच्चा तो 1, अन्यथा 0 लौटाता हैव्यवहार तालिका
| StudentName मान | $anyElementTrue परिणाम | MyValue |
|---|---|---|
| null | false | 0 |
| "Chris" | true | 1 |
| "" (खाली स्ट्रिंग) | false | 0 |
| 0 | false | 0 |
| [] (खाली ऐरे) | false | 0 |
बेहतर विकल्प: $ifNull (MongoDB 3.2+)
फ़ील्ड अनुपस्थिति जांचने के लिए