यदि आपको MongoDB में किसी दस्तावेज़ का आकार वापस करने की आवश्यकता है, तो आप निम्न का उपयोग कर सकते हैं:
$bsonSize
एकत्रीकरण पाइपलाइन ऑपरेटरObject.bsonSize()
विधि
नीचे प्रत्येक दृष्टिकोण के उदाहरण दिए गए हैं।
नमूना डेटा
निम्नलिखित उदाहरणों के लिए, हम products
. नामक संग्रह का उपयोग करेंगे निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "product" : { "name" : "Shirt - Short Sleeves", "color" : "White" } } { "_id" : 2, "product" : { "name" : "Cap", "color" : "Green" } } { "_id" : 3, "product" : { "name" : "Travel Pack", "color" : "Light Blue" } }
ध्यान दें कि प्रत्येक उत्पाद फ़ील्ड में एक एम्बेडेड दस्तावेज़ होता है।
हम पूरे दस्तावेज़ का आकार, या केवल एम्बेडेड ऑब्जेक्ट वापस कर सकते हैं।
द $bsonSize
एग्रीगेशन पाइपलाइन ऑपरेटर
हम $bsonSize
. का उपयोग कर सकते हैं $$ROOT
. के साथ ऑपरेटर पूरे दस्तावेज़ का आकार प्राप्त करने के लिए सिस्टम चर। $$ROOT
चर उस दस्तावेज़ को संदर्भित करता है जिसे वर्तमान में पाइपलाइन द्वारा संसाधित किया जा रहा है।
उदाहरण:
db.products.aggregate([
{
$project: {
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
परिणाम:
{ "_id" : 1, "rootSize" : 81 } { "_id" : 2, "rootSize" : 63 } { "_id" : 3, "rootSize" : 76 }
इस मामले में हमें संग्रह में सभी दस्तावेज़ों का आकार मिलता है, लेकिन आप इसे हमेशा केवल एक दस्तावेज़ या कुछ के लिए फ़िल्टर कर सकते हैं।
एम्बेडेड दस्तावेज़ों का आकार प्राप्त करने के लिए, हम $$ROOT
. को बदल सकते हैं दस्तावेज़ों के फ़ील्ड नाम के साथ चर।
उदाहरण:
db.products.aggregate([
{
$project: {
"documentSize": { $sum: { $bsonSize: "$product" } }
}
}
])
परिणाम:
{ "_id" : 1, "documentSize" : 54 } { "_id" : 2, "documentSize" : 36 } { "_id" : 3, "documentSize" : 49 }
इस मामले में, फ़ील्ड का नाम product
है और इसलिए हम $product
. का उपयोग करते हैं उस क्षेत्र को संदर्भित करने के लिए।
MongoDB देखें $bsonSize
अधिक जानकारी और उदाहरणों के लिए।
Object.bsonSize()
विधि
Object.bsonSize()
विधि दस्तावेज़ का आकार प्राप्त करने का एक और तरीका है।
उदाहरण:
Object.bsonsize(
db.products.findOne()
)
परिणाम:
81
यह विधि केवल आकार लौटाती है और नहीं।
ध्यान दें कि मैंने findOne()
. का उपयोग किया है find()
. के बजाय विधि तरीका। मैंने ऐसा इसलिए किया क्योंकि find()
केवल एक कर्सर लौटाता है, जबकि findOne()
वास्तविक दस्तावेज़ लौटाता है।
हम एम्बेडेड दस्तावेज़ का आकार डॉट नोटेशन का उपयोग करके इसे जोड़कर प्राप्त कर सकते हैं:
Object.bsonsize(
db.products.findOne().product
)
परिणाम:
54
हम अगले दस्तावेज़ का आकार उसके _id
. निर्दिष्ट करके प्राप्त कर सकते हैं क्वेरी तर्क के रूप में:
Object.bsonsize(
db.products.findOne({_id:2}).product
)
परिणाम:
36
MongoDB देखें Object.bsonSize()
अधिक जानकारी और उदाहरणों के लिए।