MongoDB में, $split
एग्रीगेशन पाइपलाइन ऑपरेटर एक स्ट्रिंग को एक सीमांकक के आधार पर सबस्ट्रिंग की एक सरणी में विभाजित करता है।
सीमांकक को स्ट्रिंग से हटा दिया जाता है, और सबस्ट्रिंग को ऐरे में तत्वों के रूप में जोड़ा जाता है।
$split
. का उपयोग करने के लिए , आप स्ट्रिंग और सीमांकक निर्दिष्ट करते हैं।
यदि स्ट्रिंग में सीमांकक नहीं मिलता है, तो मूल स्ट्रिंग को सरणी में एकमात्र आइटम के रूप में वापस कर दिया जाता है।
उदाहरण 1
मान लीजिए हमारे पास test
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "data" : "March-18-2020" }
हम $split
. का उपयोग कर सकते हैं data
को विभाजित करने के लिए हाइफ़न पर फ़ील्ड.
db.test.aggregate(
[
{ $match: { _id: 1 } },
{
$project:
{
_id: 0,
result: { $split: [ "$data", "-" ] }
}
}
]
)
परिणाम:
{ "result" : [ "March", "18", "2020" ] }
उदाहरण 2
मान लीजिए हमारे पास निम्नलिखित दस्तावेज़ हैं:
{ "_id" : 2, "data" : "Sydney, Australia, NSW 2000" }
हम $split
. का उपयोग कर सकते हैं अल्पविराम और स्थान के आधार पर डेटा फ़ील्ड को अलग करने के लिए:
db.test.aggregate(
[
{ $match: { _id: 2 } },
{
$project:
{
_id: 0,
result: { $split: [ "$data", ", " ] }
}
}
]
)
परिणाम:
{ "result" : [ "Sydney", "Australia", "NSW 2000" ] }
उदाहरण 3
यहाँ एक और उदाहरण है। इस बार हम प्रत्येक शब्द के बीच की जगह के आधार पर स्ट्रिंग को विभाजित करने जा रहे हैं।
नमूना दस्तावेज़:
{ "_id" : 3, "data" : "Homer Jay Einstein" }
आइए इसे विभाजित करें:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{
$project:
{
_id: 0,
result: { $split: [ "$data", " " ] }
}
}
]
)
परिणाम:
{ "result" : [ "Homer", "Jay", "Einstein" ] }
गलत डेटा प्रकार
दो तर्क तार होने चाहिए। गलत डेटा प्रकार प्रदान करने से त्रुटि होती है।
उदाहरण:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{
$project:
{
_id: 0,
result: { $split: [ "$data", 18 ] }
}
}
]
)
परिणाम:
Error: command failed: { "ok" : 0, "errmsg" : "$split requires an expression that evaluates to a string as a second argument, found: double", "code" : 40086, "codeName" : "Location40086" } : 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
जैसा कि त्रुटि संदेश में कहा गया है, $split requires an expression that evaluates to a string as a second argument, found: double
।