MongoDB 4.4 से, आप $binarySize
. का उपयोग कर सकते हैं एकत्रीकरण पाइपलाइन ऑपरेटर किसी दिए गए स्ट्रिंग के आकार या बाइनरी डेटा मान की सामग्री को बाइट्स में वापस करने के लिए।
यह किसी भी मान्य व्यंजक को तब तक स्वीकार करता है जब तक कि वह किसी स्ट्रिंग या बाइनरी डेटा मान का समाधान करता है। तर्क null
भी हो सकता है , इस मामले में, $binarySize
रिटर्न null
।
उदाहरण
मान लीजिए हमारे पास posts
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "title" : "Hello World!", "body" : "This is a test post for the purposes of testing", "tags" : [ "html", "css", "sql", "xml" ], "status" : null }
हम $binarySize
. का उपयोग कर सकते हैं विभिन्न क्षेत्रों के आकार की जांच करने के लिए ऑपरेटर।
उदाहरण:
db.posts.aggregate([
{
$project: {
"titleSize": { $binarySize: "$title" },
"bodySize": { $binarySize: "$body" }
}
}
])
परिणाम:
{ "_id" : 1, "titleSize" : 12, "bodySize" : 47 }
इस मामले में, हम title
. का बाइनरी आकार लौटाते हैं फ़ील्ड और body
फ़ील्ड.
शून्य मान
यदि निर्दिष्ट फ़ील्ड का मान null
है , $binarySize
ऑपरेटर null
लौटाएगा ।
उदाहरण:
db.posts.aggregate([
{
$project: {
"statusSize": { $binarySize: "$status" }
}
}
])
परिणाम:
{ "_id" : 1, "statusSize" : null }
इस मामले में, status
हमारे दस्तावेज़ में फ़ील्ड null
है , और इसलिए $binarySize
लौटा null
।
गलत डेटा प्रकार
जैसा कि बताया गया है, $binarySize
किसी भी मान्य व्यंजक को तब तक स्वीकार करता है जब तक कि वह किसी स्ट्रिंग, बाइनरी डेटा मान, या null
में से किसी एक का समाधान करता है ।
यहां एक उदाहरण दिया गया है कि क्या होता है यदि आप एक अलग बीएसओएन प्रकार के लिए एक अभिव्यक्ति प्रदान करते हैं:
db.posts.aggregate([
{
$project: {
"tagsSize": { $binarySize: "$tags" }
}
}
])
परिणाम:
Error: command failed: { "ok" : 0, "errmsg" : "$binarySize requires a string or BinData argument, found: array", "code" : 51276, "codeName" : "Location51276" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:18:14 [email protected]/mongo/shell/assert.js:618:17 [email protected]/mongo/shell/assert.js:708:16 [email protected]/mongo/shell/db.js:266:5 [email protected]/mongo/shell/collection.js:1046:12 @(shell):1:1
इस मामले में, हमने एक सरणी का आकार खोजने की कोशिश की, लेकिन यह समर्थित बीएसओएन प्रकारों में से एक नहीं है, इसलिए हमें एक त्रुटि मिलती है।
हालांकि, हम अभी भी अलग-अलग सरणी तत्वों का आकार प्राप्त कर सकते हैं (जब तक वे समर्थित प्रकारों में से एक हैं)।
उदाहरण:
db.posts.aggregate([
{
$project: {
"tagsSize": { $binarySize: { $arrayElemAt: [ "$tags", 0 ] } }
}
}
])
परिणाम:
{ "_id" : 1, "tagsSize" : 4 }
इस उदाहरण में, हमें पहले सरणी तत्व का आकार मिलता है (सरणी शून्य आधारित हैं, इसलिए 0
पहले तत्व को संदर्भित करता है)।
दस्तावेज़ का आकार
MongoDB में $bsonSize
. भी है ऑपरेटर, जो आपको एक दस्तावेज़ का आकार प्राप्त करने में सक्षम बनाता है।
दस्तावेज़ का आकार प्राप्त करने का दूसरा तरीका Object.bsonSize()
. का उपयोग करना है विधि।