Finding a specific item in subdocument with MongoDB?

To find a specific item in a subdocument in MongoDB, use dot notation to access nested fields within array elements. This allows you to query documents based on values inside subdocuments.

Syntax

db.collection.find({
    "arrayField.nestedField": "value"
});

Sample Data

db.demo81.insertMany([
    {
        "StudentDetails": [
            {"StudentName": "Carol", "StudentSubject": "Java"},
            {"StudentName": "David", "StudentSubject": "MongoDB"}
        ]
    },
    {
        "StudentDetails": [
            {"StudentName": "Mike", "StudentSubject": "Python"},
            {"StudentName": "David", "StudentSubject": "C"}
        ]
    },
    {
        "StudentDetails": [
            {"StudentName": "Jace", "StudentSubject": "C++"},
            {"StudentName": "John", "StudentSubject": "MySQL"}
        ]
    }
]);
{
    "acknowledged": true,
    "insertedIds": [
        ObjectId("5e2bf6ec71bf0181ecc4229d"),
        ObjectId("5e2bf70471bf0181ecc4229e"),
        ObjectId("5e2bf72071bf0181ecc4229f")
    ]
}

Display All Documents

db.demo81.find();
{
    "_id": ObjectId("5e2bf6ec71bf0181ecc4229d"), 
    "StudentDetails": [
        { "StudentName": "Carol", "StudentSubject": "Java" },
        { "StudentName": "David", "StudentSubject": "MongoDB" }
    ]
}
{
    "_id": ObjectId("5e2bf70471bf0181ecc4229e"), 
    "StudentDetails": [
        { "StudentName": "Mike", "StudentSubject": "Python" },
        { "StudentName": "David", "StudentSubject": "C" }
    ]
}
{
    "_id": ObjectId("5e2bf72071bf0181ecc4229f"), 
    "StudentDetails": [
        { "StudentName": "Jace", "StudentSubject": "C++" },
        { "StudentName": "John", "StudentSubject": "MySQL" }
    ]
}

Example: Find Documents with Specific Subdocument

Find all documents where any student is studying "MongoDB" ?

db.demo81.find({
    "StudentDetails.StudentSubject": "MongoDB"
});
{
    "_id": ObjectId("5e2bf6ec71bf0181ecc4229d"),
    "StudentDetails": [
        { "StudentName": "Carol", "StudentSubject": "Java" },
        { "StudentName": "David", "StudentSubject": "MongoDB" }
    ]
}

Key Points

  • Use dot notation (arrayField.nestedField) to query nested subdocuments
  • MongoDB searches all array elements for the matching condition
  • Returns the entire document containing the matched subdocument

Conclusion

Dot notation enables precise querying of subdocuments within arrays. Use arrayName.fieldName to find documents where any array element contains the specified field value.

Updated on: 2026-03-15T01:51:48+05:30

193 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements