MongoDB में runCommand() का उपयोग करके सामान्य संग्रह को कैप्ड संग्रह में बदलना
MongoDB में runCommand() के साथ convertToCapped कमांड का उपयोग करके मौजूदा संग्रह को कैप्ड संग्रह (फिक्स्ड साइज़, सर्कुलर बफर) में बदला जा सकता है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo416.insertOne({"StudentName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e723a7bb912067e57771adf") }
> db.demo416.insertOne({"StudentName":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e723a81b912067e57771ae0") }
> db.demo416.insertOne({"StudentName":"Sam"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e723a84b912067e57771ae1") }
सभी दस्तावेज़ देखना
> db.demo416.find();
आउटपुट:
{ "_id" : ObjectId("5e723a7bb912067e57771adf"), "StudentName" : "David" }
{ "_id" : ObjectId("5e723a81b912067e57771ae0"), "StudentName" : "Mike" }
{ "_id" : ObjectId("5e723a84b912067e57771ae1"), "StudentName" : "Sam" }
संग्रह को कैप्ड में बदलना (आकार: 100 बाइट्स)
> db.runCommand( { convertToCapped: 'demo416', size: 100 } );
{ "ok" : 1 }
संग्रह आँकड़े देखना
> db.demo416.stats();
आउटपुट (मुख्य भाग):
{
"ns" : "test.demo416",
"size" : 132,
"count" : 3,
"capped" : true,
"maxSize" : 256,
"ok" : 1
}
कैप्ड संग्रह की विशेषताएं:
- फिक्स्ड साइज़: निर्दिष्ट आकार तक पहुंचने पर सबसे पुराने दस्तावेज़ स्वतः हट जाते हैं
- इन्सर्शन क्रम: दस्तावेज़ इन्सर्शन क्रम में बने रहते हैं (प्राकृतिक क्रम)
- उच्च प्रदर्शन: लॉगिंग, कैशिंग, मीट्रिक्स के लिए आदर्श
- कोई डिलीट नहीं: अलग से दस्तावेज़ हटाया नहीं जा सकता
- कोई अपडेट नहीं: दस्तावेज़ आकार बढ़ाने वाला अपडेट नहीं कर सकते
- इंडेक्स: केवल _id इंडेक्स अनुमत (अन्य ड्रॉप हो जाते हैं)
निर्माण के समय सीधे कैप्ड संग्रह बनाना:
db.createCollection("logs", { capped: true, size: 100000, max: 1000 })
उपयोग के मामले: एप्लिकेशन लॉग्स, ऑडिट ट्रेल्स, सेशन डेटा, रियल-टाइम मीट्रिक्स।
चेतावनी: रूपांतरण अपरिवर्तनीय है। कैप्ड से सामान्य में वापस नहीं बदल सकते।