Query MongoDB for a nested search

To perform nested searches in MongoDB, use the $and operator combined with $or to create complex query conditions. This allows you to match documents that satisfy multiple criteria with optional alternative conditions.

Syntax

db.collection.find({
    $and: [
        { field1: "value1" },
        { field2: "value2" },
        { $or: [
            { field3: "option1" },
            { field4: "option2" }
        ]}
    ]
});

Sample Data

db.demo12.insertMany([
    {"Name": "Chris", "Age": 23, "CountryName": "US", "Message": "Hello"},
    {"Name": "David", "Age": 21, "CountryName": "US", "Message": "Hello"},
    {"Name": "Bob", "Age": 23, "CountryName": "AUS", "Message": "Hi"},
    {"Name": "Carol", "Age": 24, "CountryName": "US", "Message": "Hi"}
]);

Display All Documents

db.demo12.find();
{ "_id" : ObjectId("5e0f70a2d7df943a7cec4fa2"), "Name" : "Chris", "Age" : 23, "CountryName" : "US", "Message" : "Hello" }
{ "_id" : ObjectId("5e0f70acd7df943a7cec4fa3"), "Name" : "David", "Age" : 21, "CountryName" : "US", "Message" : "Hello" }
{ "_id" : ObjectId("5e0f70bad7df943a7cec4fa4"), "Name" : "Bob", "Age" : 23, "CountryName" : "AUS", "Message" : "Hi" }
{ "_id" : ObjectId("5e0f70c7d7df943a7cec4fa5"), "Name" : "Carol", "Age" : 24, "CountryName" : "US", "Message" : "Hi" }

Example: Nested Search Query

Find documents where Name is "Bob" AND Age is 23 AND (CountryName is "UK" OR Message is "Hi") ?

db.demo12.find({
    $and: [
        { Name: "Bob" },
        { Age: 23 },
        { $or: [
            { CountryName: "UK" },
            { Message: "Hi" }
        ]}
    ]
});
{ "_id" : ObjectId("5e0f70bad7df943a7cec4fa4"), "Name" : "Bob", "Age" : 23, "CountryName" : "AUS", "Message" : "Hi" }

How It Works

The query matches documents that satisfy all conditions in $and. Since Bob's document has Name="Bob", Age=23, and Message="Hi" (which matches one condition in $or), it gets returned even though CountryName is "AUS" not "UK".

Conclusion

Nested searches using $and and $or operators enable complex conditional queries. The $and requires all conditions to be true, while $or requires at least one alternative condition to match.

Updated on: 2026-03-15T02:26:36+05:30

291 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements