MongoDB में सभी कलेक्शन्स में विशिष्ट फील्ड खोजना
MongoDB में किसी विशिष्ट फील्ड नेम वाले सभी कलेक्शन्स खोजने के लिए getCollectionNames() के साथ लूप और $exists का उपयोग करें।
क्वेरी: "StudentFirstName" फील्ड वाले कलेक्शन्स खोजना
> db.getCollectionNames().forEach(function(myCollectionName) {
... var frequency = db[myCollectionName].find({"StudentFirstName": {$exists: true}}).count();
... if (frequency > 0) {
... print(myCollectionName);
... }
... });
आउटपुट:
multiDimensionalArrayProjection
removeKeyFieldsDemo
stringOrIntegerQueryDemo
वेरिफिकेशन: removeKeyFieldsDemo में StudentFirstName चेक करना
> db.removeKeyFieldsDemo.find({"StudentFirstName":{$exists:true}});
आउटपुट:
{ "_id" : ObjectId("5cc6c8289cb58ca2b005e672"), "StudentFirstName" : "John", "StudentLastName" : "Doe" }
{ "_id" : ObjectId("5cc6c8359cb58ca2b005e673"), "StudentFirstName" : "John", "StudentLastName" : "Smith" }
व्याख्या:
db.getCollectionNames()- सभी कलेक्शन नेम्स की ऐरे लौटाता हैforEach()- प्रत्येक कलेक्शन पर लूप चलाता हैdb[myCollectionName]- डायनामिक कलेक्शन एक्सेस (ब्रैकेट नोटेशन)find({field: {$exists: true}}).count()- फील्ड वाले डॉक्यूमेंट्स गिनता हैfrequency > 0- कम से कम एक डॉक्यूमेंट में फील्ड हो
नोट: यह सभी कलेक्शन्स स्कैन करता है, बड़े डेटाबेस में धीमा हो सकता है। प्रोडक्शन में सावधानी से उपयोग करें।
बेहतर विकल्प (MongoDB 3.0+): db.getCollectionInfos() या सिस्टम कलेक्शन्स से मेटाडेटा क्वेरी करें।