MongoDB में, आप Object.bsonSize()
. का उपयोग कर सकते हैं किसी दस्तावेज़ के आकार को बाइट्स में वापस करने की विधि।
उदाहरण
मान लीजिए हमारे पास bars
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "name" : "Boardwalk Social", "location" : { "type" : "Point", "coordinates" : [ -16.919297718553366, 145.77675259719823 ] }, "categories" : [ "Bar", "Restaurant", "Hotel" ], "reviews" : [ { "name" : "Steve", "date" : "20 December, 2020", "rating" : 5, "comments" : "Great vibe." }, { "name" : "Lisa", "date" : "25 October, 2020", "rating" : 3, "comments" : "They just raised their prices :(" }, { "name" : "Kim", "date" : "21 October, 2020", "rating" : 4, "comments" : "Nice for Friday happy hour" } ] }
हम देख सकते हैं कि location
फ़ील्ड में एक दस्तावेज़ है। और reviews
फ़ील्ड में दस्तावेज़ों की एक सरणी होती है।
सबसे पहले, Object.bsonSize()
. का उपयोग करें शीर्ष स्तर के दस्तावेज़ का आकार वापस करने की विधि।
Object.bsonsize(db.bars.findOne())
परिणाम:
502
हम देख सकते हैं कि पूरा दस्तावेज़ 502 बाइट्स का है।
ध्यान दें कि मैं findOne()
का उपयोग कर रहा हूं और नहीं find()
. इसका कारण यह है कि find()
दस्तावेज़ के बजाय एक कर्सर लौटाता है। findOne()
दूसरी ओर, विधि वास्तविक दस्तावेज़ लौटाती है और इसलिए इसके परिणाम सटीक होने चाहिए।
उपदस्तावेज़
आइए Object.bsonSize()
. का उपयोग करें location
. के आकार की जांच करने के लिए फ़ील्ड.
हम location
. का मान प्राप्त करने के लिए डॉट नोटेशन का उपयोग कर सकते हैं फ़ील्ड:
Object.bsonsize(
db.bars.findOne().location
)
परिणाम:
61
इस मामले में, दस्तावेज़ 61 बाइट्स है।
बस यह सुनिश्चित करने के लिए, यहाँ हमने वास्तव में Object.bsonSize()
. को पास किया है विधि:
db.bars.findOne().location
परिणाम:
{ "type" : "Point", "coordinates" : [ -16.919297718553366, 145.77675259719823 ] }
तो यह वह दस्तावेज़ है जो 61 बाइट्स का है।
सरणी में दस्तावेज़
हम उन दस्तावेज़ों के आकार को भी पुनः प्राप्त कर सकते हैं जो एक सरणी के तत्व हैं।
उदाहरण:
Object.bsonsize(
db.bars.findOne().reviews[0]
)
परिणाम:
91
MongoDB सरणियाँ शून्य-आधारित हैं, इसलिए यह दस्तावेज़ पहली समीक्षा है।
पूरे दस्तावेज़ को देखने के लिए हम तर्क को स्वयं चला सकते हैं:
db.bars.findOne().reviews[0]
परिणाम:
{ "name" : "Steve", "date" : "20 December, 2020", "rating" : 5, "comments" : "Great vibe." }
अनुमान
हम Object.bsonSize()
. का उपयोग कर सकते हैं प्रक्षेपण द्वारा लौटाए गए दस्तावेज़ के आकार को वापस करने की विधि। ऐसा करने के लिए, हमें बस अपनी क्वेरी में प्रोजेक्शन प्रदान करने की आवश्यकता है।
उदाहरण:
Object.bsonsize(
db.bars.findOne(
{},
{
_id: 0,
location: 1
}
)
)
परिणाम:
76
इस मामले में, हमें 76 का आकार मिलता है।
आपने देखा होगा कि हमारे पिछले उदाहरण में, location
फ़ील्ड 61 बाइट्स थी, लेकिन अब यह 76 है।
क्या हो रहा है?
ठीक है, जब हम अनुमानों का उपयोग करते हैं, जैसे हम इस उदाहरण में हैं, तो हम वास्तव में एक बाहरी दस्तावेज़ लौटा रहे हैं जिसमें location
है फ़ील्ड का नाम और साथ ही उसका मान।
यहां बताया गया है कि यह प्रक्षेपण क्या लौटाता है:
db.bars.findOne(
{},
{
_id: 0,
location: 1
}
)
परिणाम:
{ "location" : { "type" : "Point", "coordinates" : [ -16.919297718553366, 145.77675259719823 ] } }
हालांकि, हमारे पहले के उदाहरण में, हमारी क्वेरी इस प्रकार थी:
db.bars.findOne().location
और इसे लौटा दिया:
{ "type" : "Point", "coordinates" : [ -16.919297718553366, 145.77675259719823 ] }
तो हमारे प्रक्षेपण उदाहरण ने एक बड़ा दस्तावेज़ लौटा दिया, इस तथ्य के कारण कि यह फ़ील्ड नाम और मान दोनों लौटाता है। और हमारे पहले के उदाहरण ने इस तथ्य के कारण एक छोटा दस्तावेज़ लौटाया कि इसने केवल मूल्य लौटाया।
एकत्रीकरण पाइपलाइन
एकत्रीकरण पाइपलाइन का उपयोग करते समय, आप $bsonSize
. का उपयोग कर सकते हैं दस्तावेज़ का आकार प्राप्त करने के लिए ऑपरेटर।
आप $binarySize
. का भी उपयोग कर सकते हैं स्ट्रिंग या बाइनरी मान की सामग्री को बाइट्स में प्राप्त करने के लिए ऑपरेटर।