सभी संग्रहों पर पुनरावृत्ति
सभी संग्रह नाम प्राप्त करने के लिए getCollectionNames() का उपयोग करें, फिर प्रत्येक पर लूप चलाकर वांछित क्वेरी निष्पादित करें।
उदाहरण: प्रत्येक संग्रह से नवीनतम दस्तावेज़ का टाइमस्टैम्प प्राप्त करना
डेटाबेस नाम "test" है। निम्न क्वेरी प्रत्येक संग्रह में सबसे हालिया दस्तावेज़ (अवरोही _id क्रम के आधार पर) ढूंढती है और उसका टाइमस्टैम्प प्रिंट करती है।
> db.getCollectionNames().forEach(function(collectionNameDemo) {
var nextDemo = db[collectionNameDemo].find().sort({_id:-1}).limit(1);
if (nextDemo.hasNext()) {
printjson(nextDemo.next()._id.getTimestamp());
}
});
नमूना आउटपुट
ISODate("2019-02-21T18:52:43Z")
ISODate("2019-03-19T17:49:00Z")
ISODate("2019-03-06T15:40:12Z")
ISODate("2019-03-15T16:31:50Z")
ISODate("2019-02-21T15:40:52Z")
... (अन्य टाइमस्टैम्प)
व्याख्या:
db.getCollectionNames(): वर्तमान डेटाबेस में सभी संग्रह नामों की सरणी लौटाता है।forEach: प्रत्येक संग्रह नाम पर पुनरावृत्त करता है।db[collectionNameDemo]: संग्रह नाम को वेरिएबल के रूप में एक्सेस करता है।.sort({_id:-1}).limit(1): _id के अवरोही क्रम में पहला दस्तावेज़ (सबसे हालिया) प्राप्त करता है।_id.getTimestamp(): ObjectId में एम्बेडेड टाइमस्टैम्प निकालता है।
उपयोग का मामला: यह पैटर्न रखरखाव कार्यों, ऑडिटिंग, या सभी संग्रहों पर एक समान ऑपरेशन करने के लिए उपयोगी है।