Problem: Suppose wehave a collection and one field is type string contains some special character (like !@#$%) and we don’t want these special character.
Solution: We can easily remove the special character from field using script “replace(/[^a-zA-Z 0-9 ]/g, '')” in our query. How can we remove special character from string using this script please see following example.
Example: Suppose we have a collection “EduSurvey “where we are collecting information from institutions.
{Name:"JB institute”, About:"This is good one collage for MBA", Information:"This $%%institute ##has good faculty etc$$"} {Name:"MK institute”, About:"This is good one collage for MCA", Information:"This$$%# is the dummy text12"} {Name:"MG institute”, About:"This is good one collage for B,Tech", Information:"This# institute@ has&* good infrastructure"} |
Did you notice Information fields contains some special character so we need to remove these special character.
Query to remove special character from string in mongodb
db.getCollection('EduSurvey').aggregate([ { $project : { Name : 1 , About : 1,Information:1 } } ]) .forEach(function(doc,Index) {doc.Information=doc.Information.replace(/[^a-zA-Z 0-9 ]/g, ''); db.EduSurvey.update({ "_id": doc._id },{ "$set": { "Information": doc.Information } });}); db.getCollection('EduSurvey').aggregate([ { $project : { Name : 1 , About : 1,Information:1 } } ]) |
Result:
/* 1 */ { "_id" : ObjectId("579f33954237507d19a1897e"), "Name" : "JB institute", "About" : "This is good one collage for MBA", "Information" : "This institute has good faculty etc" } /* 2 */ { "_id" : ObjectId("579f33954237507d19a1897f"), "Name" : "MK institute", "About" : "This is good one collage for MCA", "Information" : "This is the dummy text12" } /* 3 */ { "_id" : ObjectId("579f33954237507d19a18980"), "Name" : "MG institute", "About" : "This is good one collage for B,Tech", "Information" : "This institute has good infrastructure" } |