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

मोंगोडीबी $strLenBytes

MongoDB, $strLenBytes एग्रीगेशन पाइपलाइन ऑपरेटर निर्दिष्ट स्ट्रिंग में UTF-8 एन्कोडेड बाइट्स की संख्या लौटाता है।

एक स्ट्रिंग में प्रत्येक वर्ण में उपयोग किए जा रहे वर्ण के आधार पर भिन्न संख्या में बाइट हो सकते हैं। $strLenBytes ऑपरेटर यह पता लगा सकता है कि प्रत्येक वर्ण में कितने बाइट हैं और पूरे स्ट्रिंग के लिए सही परिणाम लौटाएं।

उदाहरण

मान लीजिए हमारे पास english . नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:

{ "_id" : 1, "data" : "Maimuang" }
{ "_id" : 2, "data" : "M" }
{ "_id" : 3, "data" : "a" }
{ "_id" : 4, "data" : "i" }
{ "_id" : 5, "data" : "m" }
{ "_id" : 6, "data" : "u" }
{ "_id" : 7, "data" : "a" }
{ "_id" : 8, "data" : "n" }
{ "_id" : 9, "data" : "g" }

हम $strLenBytes . लागू कर सकते हैं उन दस्तावेज़ों में डेटा फ़ील्ड में:

db.english.aggregate(
   [
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

{ "data" : "Maimuang", "result" : 8 }
{ "data" : "M", "result" : 1 }
{ "data" : "a", "result" : 1 }
{ "data" : "i", "result" : 1 }
{ "data" : "m", "result" : 1 }
{ "data" : "u", "result" : 1 }
{ "data" : "a", "result" : 1 }
{ "data" : "n", "result" : 1 }
{ "data" : "g", "result" : 1 }

हम देख सकते हैं कि पूरा शब्द 8 बाइट्स का है और प्रत्येक वर्ण 1 बाइट का है।

थाई वर्ण

यहां एक उदाहरण दिया गया है जो थाई वर्णों का उपयोग करता है, जो प्रत्येक 3 बाइट्स हैं।

हमारे पास thai . नाम का एक संग्रह है निम्नलिखित दस्तावेजों के साथ:

{ "_id" : 1, "data" : "ไม้เมือง" }
{ "_id" : 2, "data" : "ไ" }
{ "_id" : 3, "data" : "ม้" }
{ "_id" : 4, "data" : "เ" }
{ "_id" : 5, "data" : "มื" }
{ "_id" : 6, "data" : "อ" }
{ "_id" : 7, "data" : "ง" }

और यहाँ क्या होता है जब हम $strLenBytes . लागू करते हैं उन दस्तावेज़ों के लिए:

db.thai.aggregate(
   [
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

{ "data" : "ไม้เมือง", "result" : 24 }
{ "data" : "ไ", "result" : 3 }
{ "data" : "ม้", "result" : 6 }
{ "data" : "เ", "result" : 3 }
{ "data" : "มื", "result" : 6 }
{ "data" : "อ", "result" : 3 }
{ "data" : "ง", "result" : 3 }

इनमें से दो वर्णों को डाइक्रिटिक्स का उपयोग करके संशोधित किया गया है, जिसके परिणामस्वरूप 6 बाइट वापस आ गए हैं।

अन्य वर्ण

मान लीजिए हमारे पास other . नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:

{ "_id" : 1, "data" : "é" }
{ "_id" : 2, "data" : "©" }
{ "_id" : 3, "data" : "℘" }

और चलिए $strLenBytes . लागू करते हैं उन दस्तावेज़ों के लिए:

db.other.aggregate(
   [
     { $match: { _id: { $in: [ 1, 2, 3 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

{ "data" : "é", "result" : 2 }
{ "data" : "©", "result" : 2 }
{ "data" : "℘", "result" : 3 }

पहले दो अक्षर 2 बाइट्स हैं और तीसरा 3 बाइट्स है। बाइट्स की संख्या चरित्र पर निर्भर करती है। कुछ वर्ण 4 बाइट्स का उपयोग कर सकते हैं।

स्पेस कैरेक्टर एक बाइट का उपयोग करता है। इसलिए दो स्पेस कैरेक्टर 2 बाइट्स का उपयोग करते हैं, और इसी तरह।

मान लीजिए हमारे पास निम्नलिखित दस्तावेज हैं:

{ "_id" : 4, "data" : " " }
{ "_id" : 5, "data" : "  " }

और हम $strLenBytes . लागू करते हैं उन दस्तावेज़ों के लिए:

db.other.aggregate(
   [
     { $match: { _id: { $in: [ 4, 5 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

{ "data" : " ", "result" : 1 }
{ "data" : "  ", "result" : 2 }

खाली स्ट्रिंग्स

खाली तार 0 लौटाते हैं ।

यहाँ एक खाली स्ट्रिंग वाला दस्तावेज़ है:

{ "_id" : 6, "data" : "" }

और यहाँ क्या होता है जब हम $strLenBytes . लागू करते हैं उस दस्तावेज़ के लिए:

db.other.aggregate(
   [
     { $match: { _id: { $in: [ 6 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

{ "data" : "", "result" : 0 }

गलत डेटा प्रकार

गलत डेटा प्रकार पास करने से त्रुटि होती है।

मान लीजिए हमारे पास निम्नलिखित दस्तावेज़ हैं:

{ "_id" : 7, "data" : 123 }

डेटा field एक नंबर होता है।

आइए लागू करें $strLenBytes उस दस्तावेज़ के लिए:

db.other.aggregate(
   [
     { $match: { _id: { $in: [ 7 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$strLenBytes requires a string argument, found: double",
	"code" : 34473,
	"codeName" : "Location34473"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:639:17
[email protected]/mongo/shell/assert.js:729:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1058:12
@(shell):1:1

शून्य मान

null प्रदान करना इसके परिणामस्वरूप त्रुटि भी होती है।

मान लीजिए हमारे पास निम्नलिखित दस्तावेज़ हैं:

{ "_id" : 8, "data" : null }

डेटा field इसमें null शामिल है ।

आइए लागू करें $strLenBytes उस दस्तावेज़ के लिए:

db.other.aggregate(
   [
     { $match: { _id: { $in: [ 8 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "$strLenBytes requires a string argument, found: null",
	"code" : 34473,
	"codeName" : "Location34473"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:639:17
[email protected]/mongo/shell/assert.js:729:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1058:12
@(shell):1:1

अनुपलब्ध फ़ील्ड

त्रुटियों को उत्पन्न करने के विषय के साथ जारी रखना, एक गैर-मौजूद फ़ील्ड निर्दिष्ट करना भी एक त्रुटि उत्पन्न करता है।

दस्तावेज़:

{ "_id" : 9 }

लागू करें $strLenBytes :

db.other.aggregate(
   [
     { $match: { _id: { $in: [ 9 ] } } },
     {
       $project:
          {
            _id: 0,
            data: 1,
            result: { $strLenBytes: "$data" }
          }
     }
   ]
)

परिणाम:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$strLenBytes requires a string argument, found: missing",
	"code" : 34473,
	"codeName" : "Location34473"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:639:17
[email protected]/mongo/shell/assert.js:729:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1058:12
@(shell):1:1

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $गुणा

  2. मोंगो डीबी ऑब्जेक्ट आईडी जेएसओएन सीरिएलाइज़र का उपयोग करके deserializing

  3. नेवला - रेंज त्रुटि:अधिकतम कॉल स्टैक आकार पार हो गया

  4. गलत URI के कारण MongoDB से कनेक्ट नहीं हो सकता

  5. मोंगोडीबी $atan