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