MongoDB में शर्त के आधार पर फिल्टर किए गए दस्तावेज़ों का कुल बाइट आकार प्राप्त करने के लिए Object.bsonsize() के साथ forEach() लूप का उपयोग करें।
उदाहरण
दस्तावेज़ बनाएं:
> db.mongoDBCollectionSizeDemo.insertOne({"Name": "John", "Age": 23});
{ "acknowledged" : true, "insertedId" : ObjectId("5cf23e3db64a577be5a2bc16") }
> db.mongoDBCollectionSizeDemo.insertOne({"Name": "Chris", "Age": 24});
{ "acknowledged" : true, "insertedId" : ObjectId("5cf23e45b64a577be5a2bc17") }
> db.mongoDBCollectionSizeDemo.insertOne({"Name": "Robert", "Age": 26});
{ "acknowledged" : true, "insertedId" : ObjectId("5cf23e4db64a577be5a2bc18") }
दस्तावेज़ देखें:
> db.mongoDBCollectionSizeDemo.find();
{ "_id" : ObjectId("5cf23e3db64a577be5a2bc16"), "Name" : "John", "Age" : 23 }
{ "_id" : ObjectId("5cf23e45b64a577be5a2bc17"), "Name" : "Chris", "Age" : 24 }
{ "_id" : ObjectId("5cf23e4db64a577be5a2bc18"), "Name" : "Robert", "Age" : 26 }
Name="Robert" वाले दस्तावेज़ का आकार प्राप्त करें
> var collectionsize = 0;
> db.mongoDBCollectionSizeDemo.find({Name: 'Robert'}).forEach(function(d) {
var s = Object.bsonsize(d);
collectionsize = collectionsize + s;
})
> print(collectionsize);
आउटपुट:
52
व्याख्या:
find({Name: 'Robert'})- शर्त के साथ दस्तावेज़ फिल्टरforEach()- प्रत्येक दस्तावेज़ पर लूपObject.bsonsize(d)- दस्तावेज़ का BSON आकार बाइट्स में लौटाता है- सभी आकार जोड़कर कुल प्राप्त करें
बेहतर तरीके
कुल कलेक्शन आकार (सभी दस्तावेज़ + इंडेक्स)
db.mongoDBCollectionSizeDemo.stats().size // केवल डेटा आकार
db.mongoDBCollectionSizeDemo.stats().storageSize // स्टोरेज आकार (संपीड़न सहित)
db.mongoDBCollectionSizeDemo.totalSize() // डेटा + इंडेक्स
एग्रीगेशन (MongoDB 4.4+)
db.collection.aggregate([
{$match: {Name: "Robert"}},
{$group: {_id: null, totalSize: {$sum: {$bsonSize: "$$ROOT"}}}}
])
नोट: Object.bsonsize() शेल फ़ंक्शन है, ड्राइवर में समान कार्यक्षमता के लिए BSON सीरियलाइज़ेशन आकार की गणना करें।