Open In App

How to Query MongoDB with “like”?

Last Updated : 10 Apr, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Querying data in MongoDB often requires patternmatching operations similar to SQL’s “LIKE” operator. While MongoDB doesn’t have a direct “LIKE” operator, it offers the $regex operator and regular expressions for achieving similar functionality.

In this article, We will learn about How to Query MongoDB with “like” with the help of $regex and regular expression in detail along with the implementations and so on.

How to Query MongoDB with “like”?

To query MongoDB with a “like” operator equivalent, we can use the $regex operator along with regular expressions. However, MongoDB offers several methods to query MongoDB with “like” are defined below:

  1. Using $regex Expressions
  2. Using the Regular Operator

Syntax:

db.collection.find({ "field": { $regex: /pattern/i } });
  • collection: The name of the MongoDB collection we want to query.
  • “field”: The field within the documents we want to query.
  • /pattern/: The regular expression pattern we want to match.
  • i: An optional flag that makes the pattern case-insensitive.

Let’s set up an Environment:

To understand How to query MongoDB with “like” we need a collection and some documents on which we will perform various operations and queries. Here we will consider a collection called users which contains information like name, email, username, bio, and city of the Employees in various documents.

> db.users.insertMany([
   {
     "name": "John Doe",
     "email": "john@example.com",
     "username": "johndoe",
     "bio": "Software Engineer with a passion for coding",
     "city": "New York"
     },
    {
    "name": "Alice Smith",
    "email": "alice@example.com",
    "username": "alicesmith",
    "bio": "Web Developer interested in UX design",
    "city": "San Francisco"
    },
    {
    "name": "francis",
    "email": "francis@example.com",
    "username": "francis",
    "bio": "data scientist",
    "city": "Madagascar"
    }
    ]);

Output:

usersCollection

user collections created

1. Using the $regex Operator

In MongoDB, the $regex operator is a powerful tool for performing pattern matching operations within queries. It allows for flexible searching based on regular expressions, enabling refined search capabilities similar to SQL’s “LIKE” operator.

Example 1

Let’s Retrieve documents from the “users” collection where the “name” field contains the case-insensitive string “john”.

// Querying the documents where name contains with John
db.users.find({ "name": { $regex: /john/i } });

Output:

Using-the-$regex-Operator01

Querying MongoDB with “like”

Explanation: In the above output, we quered all the documents where name contains with “john”.

Example 2

Let’s Find all documents in the “users” collection where the “username” field contains the case-insensitive string “alice”

// Querying the documents where username contains alice
db.users.find({ "username": { $regex: /alice/i } });

Output:

Using-the-$regex-Operator02

Querying MongoDB with “like”

Explanation: In the above output, we quered all the documents where username contains “alice”.

2. Using Regular Expressions

In MongoDB, Regular Expressions (regex) offer a powerful tool for querying and searching data based on specific patterns within fields. Regular expressions allow for flexible and dynamic searches, akin to SQL’s “LIKE” operator.

Example 1:

Let’s Retrieve documents from the “users” collection where the “bio” field contains the case-insensitive substring “data”

// Find documents where the bio contains "data" (case insensitive)
db.users.find({ bio: { $regex: /data/, $options: 'i' } })

Output:

Using-Regular-Expressions01

Querying MongoDB with “like”

Explanation: In the above output, we quered all the documents where username contains “alice”.

Example 2

Let’s Retrieve documents from the “users” collection where the “email” field contains the substring “john” using a multi-line matching pattern.

// Find documents where the email contains "john"
db.users.find({ email: { $regex: /john/, $options: 'm' } })

Output:

Using-Regular-Expressions02

Querying MongoDB with “like”

Explanation: In the above output, we quered all the documents where the email contains “john”.

Conclusion

Overall, Querying MongoDB with “like” operators is a powerful feature provided by MongoDB’s $regex operator and regular expressions. With the help of these features, you can perform flexible and dynamic searches within your MongoDB collections, enhancing your data querying capabilities.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads