Open In App
Related Articles

MongoDB – Query Embedded Documents Using Mongo Shell

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

MongoDB provides you read operations to retrieve embedded/nested documents from the collection or query a collection for a embedded/nested document. You can perform read operations using the db.collection.find() method. This method selects or views embedded/nested documents of the collection and returns the cursor to the selected document.

Syntax: db.collection.find(filter, projection) 

Parameters: 

  • filter: It is an optional parameter. It specifies the selection filter with the help of query operators. And if you want to get all the documents present in the collection, then omit these parameters or pass an empty document in the method. The type of this parameter is a Document.
  • projection: It is an optional parameter. It specifies that only those fields return to the document that matches the given query filter. And if you want to get all the fields in the document, then omit this parameter.

Return: This method returns a cursor to the documents that match the specified query criteria. When you use find() method, it returns documents, which means the method is actually returning the cursor to the documents.

Accessing embedded/nested documents –

In MongoDB, you can access the fields of nested/embedded documents of the collection using dot notation and when you are using dot notation, then the field and the nested field must be inside the quotation marks. 

Syntax: 

"field.nestedField": value

In the following examples, we are working with:

Database: GeeksforGeeks 

Collection: Courses 

Document: three documents that contain the details of the students in the form of field-value pairs.

Matching embedded/nested document –

In this example, we are retrieving the documents that exactly match the given embedded document. 

python

db.Courses.find({name: {first: "Rohit",
                        middle: "Kumar",
                        last: "Singh"}}).pretty()

                    

Select documents that match the nested field –

In this example, we are retrieving the documents that match the specified nested field. 

python

db.Courses.find({"courseDetails.name": "Java Backend Development"}).pretty()

                    

Select documents that match the nested field (Using query operators) –

In this example, we are retrieving the documents that match the nested field using the query operators. Here, in the query, we use $in operator. This operator is used to match any of the values specified in the given array. 

python

db.Courses.find({"name.first": {$in: ["Rohit", "Mohit"]}}).pretty()

                    

Select documents that match the nested fields (Using AND condition) –

In this example, we are retrieving the documents that match the nested fields. 

python

db.Courses.find({"courseDetails.name": "Sudo GATE 2020",
                 "name.first": "Mohit"}).pretty()

                    

Getting the specified fields from the embedded/nested documents :

In this example, we are retrieving fields from the embedded/nested documents using projection. 

python

db.Courses.find({branch: "CSE"}, {"name.first": 1,
                                  "name.last": 1}).pretty()

                    


Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!


Last Updated : 14 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads