MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडीबी $बाइनरीसाइज

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() . का उपयोग करना है विधि।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js और Mongoose का उपयोग करके छवियों को संग्रहीत करने के लिए GridFS का उपयोग कैसे करें

  2. मोंगोडब में डिफ़ॉल्ट रूप से एक विशिष्ट डेटाबेस से कनेक्ट करें

  3. गोलंग से कनेक्ट करने के लिए मोंगोडब 3.6 से नए यूआरएल का उपयोग कैसे करें

  4. MongoDB mongoengine में OR क्लॉज का उपयोग कर रहा है

  5. कैसे `Db.repairDatabase ()` के बिना हटाए गए स्थान को पुनः प्राप्त करने के लिए?