MongoDB में खाली ऑब्जेक्ट {} या खाली ऐरे [] वाले फ़ील्ड पहचानें
क्वेरी ऑपरेटर $gt और $exists के संयोजन से खाली ऑब्जेक्ट और खाली ऐरे में अंतर करें।
कलेक्शन बनाएं और विभिन्न प्रकार के डॉक्यूमेंट इन्सर्ट करें
> db.checkFieldDemo.insert([
{_id: 1010, StudentDetails: {}},
{_id: 1011, StudentDetails: [{StudentId: 1}]},
{_id: 1012, StudentDetails: [{}]},
{_id: 1013},
{_id: 1014, StudentDetails: null},
{_id: 1015, StudentDetails: {StudentId: 1}}
]);
BulkWriteResult({ "nInserted": 6 })
सभी डॉक्यूमेंट देखें
> db.checkFieldDemo.find().pretty();
{ "_id": 1010, "StudentDetails": {} }
{ "_id": 1011, "StudentDetails": [{"StudentId": 1}] }
{ "_id": 1012, "StudentDetails": [{}] }
{ "_id": 1013 }
{ "_id": 1014, "StudentDetails": null }
{ "_id": 1015, "StudentDetails": {"StudentId": 1} }
खाली ऑब्जेक्ट {} वाले डॉक्यूमेंट खोजें (खाली ऐरे नहीं)
> db.checkFieldDemo.find({
"StudentDetails": {$gt: {}},
"StudentDetails.0": {$exists: false}
});
{ "_id": 1015, "StudentDetails": {"StudentId": 1} }
लॉजिक समझें
| कंडीशन | अर्थ | मैचिंग _id |
|---|---|---|
StudentDetails: {$gt: {}} | फ़ील्ड मौजूद है और खाली ऑब्जेक्ट {} से बड़ा है (यानी नॉन-इम्प्टी ऑब्जेक्ट या नॉन-इम्प्टी ऐरे) | 1011, 1012, 1015 |
StudentDetails.0: {$exists: false} | इंडेक्स 0 मौजूद नहीं है (यानी ऐरे नहीं है या खाली ऐरे है) | 1010, 1014, 1015 |
| दोनों AND | नॉन-इम्प्टी ऑब्जेक्ट (ऐरे नहीं) | 1015 |
प्रत्येक _id का विश्लेषण
- 1010: खाली ऑब्जेक्ट {} -
$gt: {}फेल (खाली ऑब्जेक्ट {} से बड़ा नहीं) - 1011: नॉन-इम्प्टी ऐरे -
$gt: {}पास, लेकिन.0मौजूद है इसलिए दूसरा फेल - 1012: खाली ऑब्जेक्ट वाला ऐरे [{}] -
$gt: {}पास (ऐरे नॉन-इम्प्टी),.0मौजूद है इसलिए दूसरा फेल - 1013: फ़ील्ड मौजूद नहीं - दोनों फेल
- 1014: null -
$gt: {}फेल (null ऑब्जेक्ट नहीं) - 1015: नॉन-इम्प्टी ऑब्जेक्ट - दोनों पास ✓