Welcome to plsql4all.blogspot.com SQL, MYSQL, ORACLE, TERADATA, MONGODB, MARIADB, GREENPLUM, DB2, POSTGRESQL.

Tuesday, 2 April 2024

SELECT in MongoDB

In MongoDB, the equivalent of a SELECT statement in relational databases is the find() method. It is used to query documents from a collection based on specified criteria.


Here's an example of how the find() method works in MongoDB:-


Let's assume we have a collection named employees with documents containing fields like employee_id, first_name, last_name, and salary. Here's how you can perform a find() operation to retrieve documents from the employees collection:-


// Sample collection data

db.employees.insertMany([

  { employee_id: 1, first_name: "John", last_name: "Doe", salary: 50000 },

  { employee_id: 2, first_name: "Jane", last_name: "Smith", salary: 60000 },

  { employee_id: 3, first_name: "Michael", last_name: "Johnson", salary: 55000 },

  { employee_id: 4, first_name: "Emily", last_name: "Brown", salary: 65000 }

]);


// Query to retrieve all documents from the employees collection

db.employees.find();


Output:-

{ "_id" : ObjectId("..."), "employee_id" : 1, "first_name" : "John", "last_name" : "Doe", "salary" : 50000 }

{ "_id" : ObjectId("..."), "employee_id" : 2, "first_name" : "Jane", "last_name" : "Smith", "salary" : 60000 }

{ "_id" : ObjectId("..."), "employee_id" : 3, "first_name" : "Michael", "last_name" : "Johnson", "salary" : 55000 }

{ "_id" : ObjectId("..."), "employee_id" : 4, "first_name" : "Emily", "last_name" : "Brown", "salary" : 65000 }


Explanation:-

- The find() method without any parameters retrieves all documents from the employees collection.

- Each document contains the specified fields (employee_id, first_name, last_name, salary) along with an automatically generated _id field, which is a unique identifier assigned by MongoDB.

- The output shows each document in the collection with its respective field values.


This demonstrates how to perform a basic SELECT operation in MongoDB using the find() method and the resulting output.


Let's rewrite the query to include `WHERE` conditions as well:


// Query to retrieve documents from the employees collection where salary is greater than 55000

db.employees.find({ salary: { $gt: 55000 } });


Output:

{ "_id" : ObjectId("..."), "employee_id" : 2, "first_name" : "Jane", "last_name" : "Smith", "salary" : 60000 }

{ "_id" : ObjectId("..."), "employee_id" : 4, "first_name" : "Emily", "last_name" : "Brown", "salary" : 65000 }


Explanation:-

- In this query, we use the find() method with a query document as its parameter to specify the WHERE conditions.

- The query document { salary: { $gt: 55000 } } filters documents where the `salary` field is greater than ($gt) 55000.

- The output includes only the documents that satisfy the specified conditions, in this case, employees with a salary greater than 55000.


This demonstrates how to perform a SELECT operation in MongoDB with WHERE conditions using the find() method and the resulting output.


Here are five frequently asked questions (FAQs) about the `find()` method in MongoDB:-


1. Can I use multiple conditions in a single find() query in MongoDB?

   - Yes, you can use multiple conditions by specifying them within the query document. For example:-


     db.employees.find({ salary: { $gt: 55000 }, first_name: "John" });


     This query retrieves documents where the salary is greater than 55000 and the first name is "John".


2. How can I retrieve a specific number of documents or limit the result set in MongoDB?

   - You can use the limit() method to restrict the number of documents returned by a find() query. For example:

   

     db.employees.find().limit(5);

   

     This query limits the result set to the first 5 documents returned by the find() query.


3. Is it possible to sort the result set of a find() query in MongoDB?

   - Yes, you can use the sort() method to specify the sorting order of the result set. For example:

  

     db.employees.find().sort({ salary: -1 });

    

     This query sorts the result set in descending order based on the salary field.


4. Can I project specific fields or exclude certain fields from the result set in MongoDB?

   - Yes, you can use the second parameter of the find() method to specify which fields to include or exclude. For example:-

  

     db.employees.find({}, { first_name: 1, last_name: 1 });

 

     This query includes only the first_name and last_name fields in the result set.


5. How can I search for documents containing a specific value within an array field in MongoDB?

   - You can use the $elemMatch operator to query documents based on criteria within array fields. For example:-

   

     db.employees.find({ skills: { $elemMatch: { $eq: "MongoDB" } } });

   

     This query retrieves documents where the skills array contains the value "MongoDB.

Please provide your feedback in the comments section above. Please don't forget to follow.