MongoDB में, $ltrim
एकत्रीकरण पाइपलाइन ऑपरेटर एक स्ट्रिंग की शुरुआत से खाली स्थान को हटा देता है। इसमें शून्य वर्ण शामिल है।
यह निर्दिष्ट किसी भी वर्ण को भी हटा सकता है। उदाहरण के लिए, आप इसका उपयोग सभी हाइफ़न वर्णों को निकालने के लिए कर सकते हैं (-
) एक स्ट्रिंग की शुरुआत से।
उदाहरण
मान लीजिए हमारे पास pets
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "name" : "-Wag", "type" : " Dog ", "weight" : 20 }
हम देख सकते हैं कि type
फ़ील्ड में Dog
. शब्द के दोनों ओर सफेद स्थान शामिल है . हम $ltrim
. का उपयोग कर सकते हैं ऑपरेटर उस फ़ील्ड को स्ट्रिंग के बाएं हिस्से से हटाए गए व्हाइटस्पेस के साथ वापस करने के लिए।
उदाहरण:
db.pets.aggregate([
{
$project: {
name: 1,
type: { $ltrim: { input: "$type" } }
}
}
])
परिणाम:
{ "_id" : 1, "name" : "-Wag", "type" : "Dog " }
जैसा अपेक्षित था, type
फ़ील्ड को शुरुआत में व्हाइटस्पेस के बिना वापस कर दिया गया है। अंत में खाली जगह अभी भी बनी हुई है।
आप $rtrim
. का भी उपयोग कर सकते हैं स्ट्रिंग के दाहिने हिस्से को ट्रिम करने के लिए ऑपरेटर, और $trim
स्ट्रिंग के दोनों किनारों को ट्रिम करने के लिए ऑपरेटर।
ऐसे कुछ पात्र हैं जिन्हें MongoDB व्हॉट्सएप वर्ण मानता है। पूरी सूची के लिए MongoDB व्हाइटस्पेस वर्ण देखें।
अन्य वर्णों को ट्रिम करें
$ltrim
ऑपरेटर एक chars
स्वीकार करता है पैरामीटर जो आपको यह निर्दिष्ट करने की अनुमति देता है कि किन वर्णों को ट्रिम करना है।
उदाहरण:
db.pets.aggregate([
{
$project: {
name: { $ltrim: { input: "$name", chars: "-" } }
}
}
])
परिणाम:
{ "_id" : 1, "name" : "Wag" }
इस मामले में हमने chars
. शामिल किया है हाइफ़न के साथ पैरामीटर (-
), जिसके परिणामस्वरूप शब्द की शुरुआत से हाइफ़न हटा दिया गया।
एकाधिक वर्णों को ट्रिम करें
आप अनेक वर्णों को chars
. में शामिल करके उन्हें ट्रिम कर सकते हैं तर्क।
उदाहरण:
db.pets.aggregate([
{
$project: {
name: { $ltrim: { input: "$name", chars: "W-" } }
}
}
])
परिणाम:
{ "_id" : 1, "name" : "ag" }
इस मामले में, मैंने अपने chars
. के रूप में दो वर्ण प्रदान किए हैं तर्क, और उनमें से दो वर्ण स्ट्रिंग की शुरुआत में हुए। इसलिए, उन दो पात्रों को छंटनी की गई।
हालाँकि, ऐसा करते समय सावधान रहें। जब मैं सभी पात्रों को शामिल करता हूं तो यहां क्या होता है:
db.pets.aggregate([
{
$project: {
name: { $ltrim: { input: "$name", chars: "W-ag" } }
}
}
])
परिणाम:
{ "_id" : 1, "name" : "" }
सारा तार गायब हो गया है। इसने न केवल -
. को ट्रिम किया है और W
स्ट्रिंग से, लेकिन इसने a
. को भी हटा दिया है और g
वर्ण।
संख्या ट्रिम करना
$ltrim
ऑपरेटर स्ट्रिंग्स पर काम करता है। अगर हम weight
को कम करने की कोशिश करते हैं फ़ील्ड, हमें एक त्रुटि मिलती है। ऐसा इसलिए है क्योंकि weight
फ़ील्ड एक संख्या है, स्ट्रिंग नहीं।
db.pets.aggregate([
{
$project: {
name: 1,
weight: { $ltrim: { input: "$weight", chars: "2" } }
}
}
])
परिणाम:
Error: command failed: { "ok" : 0, "errmsg" : "$ltrim requires its input to be a string, got 20 (of type double) instead.", "code" : 50699, "codeName" : "Location50699" } : 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
त्रुटि हमें बताती है कि हमने एक डबल प्रदान किया है, और यह कि $ltrim
एक स्ट्रिंग होने के लिए ऑपरेटर को इसके इनपुट की आवश्यकता होती है।
यदि हम वास्तव में 2 को हटाना चाहते हैं, तो हमें इसे पहले एक स्ट्रिंग में बदलना होगा। हम इसे $convert
. के साथ कर सकते हैं या $toString
ऑपरेटर।
उदाहरण:
db.pets.aggregate([
{
$project: {
name: 1,
weight: { $ltrim: { input: { $toString: "$weight" }, chars: "2" } }
}
}
])
परिणाम:
{ "_id" : 1, "name" : "-Wag", "weight" : "0" }
हम $convert
. का उपयोग करके इसे दोबारा दोगुना कर सकते हैं या $toDouble
ऑपरेटर।
पूरा उदाहरण:
db.pets.aggregate([
{
$project: {
name: 1,
weight: { $toDouble: { $ltrim: { input: { $toString: "$weight" }, chars: "2" } } }
}
}
])
परिणाम:
{ "_id" : 1, "name" : "-Wag", "weight" : 0 }