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