🌟Regular Expression in MongoDB 🌟

Rahul Kumar
3 min readOct 1, 2022

--

Regular Expressions:

Matching patterns via regular expressions for string matching during querying.

Syntax:

The $options clause takes the following as parameters:

  • i → Performs a case insensitive match.
  • m → Performs pattern match that consists of anchors i.e. ^ for the beginning, $ for the end.
  • x → Ignores all white space characters in the pattern.
  • s → Allows dot character ( . ) to match all characters.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Example :

for regular expression we will use student database:

Inserting documents to student database in collections students_details:

> db.students_details.insertMany([
{ sno:111, sname:”AAA”, grade: “I”, marks: 93, remarks: “Very obedient and an ideal student” },
{ sno:222, sname:”BBB”, grade: “II”, marks: 90, remarks: “very obedient and punctual” },
{ sno:333, sname:”CCC”, grade: “IV”, marks: 76, remarks: “Needs improvement in communication skills” },
{ sno:444, sname:”DDD”, grade: “III”, marks: 88, remarks: “Should be punctual” }
])

Perform a LIKE match :

The following example matches all documents where the Sname field is like "DDD":

> db.students_details.find(
{ sname: { $regex: /DDD$/ } }
)

The following example matches all documents where the remarks field is like "very":

> db.students_details.find(
{ remarks: { $regex: /very/ } }
)

Perform Case-Insensitive Regular Expression Match:

By Using options ‘i’ to perform a case-insensitive match for documents with remarks value that starts with "very" :

> db.students_details.find(
{ remarks: { $regex: /^very/i } }
)
OR
> db.students_details.find(
{ remarks: { $regex: /^very/, $options: 'i' } }
)
OR
> db.students_details.find(
{ remarks: { $regex: '^very', $options: 'i' } }
)

match for documents with remarks value that ends with "punctual" :

> db.students_details.find(
{ remarks: { $regex: /punctual$/i } }
)

Multiline Match for Lines Starting with Specified Pattern:

lets insert some more documents in students :

> db.students_details.insertOne(
{ sno:555, sname:”EEE”, grade: “I”, marks: 87, remarks: “Very obedient.\nShould be punctual” }
)

The following example uses the m option to match lines starting with the letter S for multiline strings(in any line which starts with ‘S’):

> db.students_details.find({ remarks: { $regex: /^S/, $options: ‘m’ } } )

IF we remove options ‘m’ then it will give output one document.

Thank you….

--

--

Rahul Kumar
Rahul Kumar

Written by Rahul Kumar

MERN Stack Developer building scalable web apps with MongoDB, Express.js, React, and Node.js. Sharing insights and best practices for modern web development.

No responses yet