Read Operations in MongoDB
Read Operations in MongoDB
Read operations allow you to retrieve data stored in MongoDB collections. The two most commonly used functions for this purpose are find() and findOne().
MongoDB queries are performed on collections using filter objects that specify the criteria for matching documents.
find() vs findOne()
- find()returns a cursor to all matching documents.
- findOne()returns the first matched document.
Step 1: Insert Sample Data
Let’s create a students collection with multiple documents.
    db.students.insertMany([
      { name: "Alice", age: 22, grade: "A", subjects: ["Math", "Physics"] },
      { name: "Bob", age: 24, grade: "B", subjects: ["English", "History"] },
      { name: "Charlie", age: 22, grade: "A", subjects: ["Biology", "Chemistry"] },
      { name: "David", age: 23, grade: "C", subjects: ["Math", "English"] }
    ]);    {
      acknowledged: true,
      insertedIds: { ...ObjectIds... }
    }
    Step 2: Retrieve All Documents
Use find() with an empty filter {} to fetch all documents.
    db.students.find({});    { _id: ..., name: "Alice", age: 22, grade: "A", subjects: [ "Math", "Physics" ] }
    { _id: ..., name: "Bob", age: 24, grade: "B", subjects: [ "English", "History" ] }
    { _id: ..., name: "Charlie", age: 22, grade: "A", subjects: [ "Biology", "Chemistry" ] }
    { _id: ..., name: "David", age: 23, grade: "C", subjects: [ "Math", "English" ] }
    This returns a cursor. In the MongoDB shell, results are printed directly. In code (Node.js or Python), you need to iterate over the cursor.
Step 3: Filtering Documents
Let’s filter documents where grade is "A".
    db.students.find({ grade: "A" });    { _id: ..., name: "Alice", age: 22, grade: "A", subjects: [ "Math", "Physics" ] }
    { _id: ..., name: "Charlie", age: 22, grade: "A", subjects: [ "Biology", "Chemistry" ] }
    Q: How does MongoDB know which documents to return?
    A: It compares each document's grade field to "A" and returns matches. If no document matches, it returns an empty result.
Step 4: Use findOne() to Get a Single Document
    db.students.findOne({ age: 22 });    { _id: ..., name: "Alice", age: 22, grade: "A", subjects: [ "Math", "Physics" ] }
    Even though two students are aged 22, findOne() returns only the first match.
Step 5: Use Comparison Operators
Get students older than 22 using the $gt operator.
    db.students.find({ age: { $gt: 22 } });    { _id: ..., name: "Bob", age: 24, grade: "B", subjects: [ "English", "History" ] }
    { _id: ..., name: "David", age: 23, grade: "C", subjects: [ "Math", "English" ] }
    Step 6: Projecting Specific Fields
You can limit the fields returned using projection. For example, get only name and grade:
    db.students.find({ grade: "A" }, { name: 1, grade: 1, _id: 0 });    { name: "Alice", grade: "A" }
    { name: "Charlie", grade: "A" }
    We used _id: 0 to exclude the default _id field.
Step 7: Combining Multiple Conditions
Let’s find students who are aged 22 and have grade "A".
    db.students.find({ age: 22, grade: "A" });    { _id: ..., name: "Alice", age: 22, grade: "A", subjects: [ "Math", "Physics" ] }
    { _id: ..., name: "Charlie", age: 22, grade: "A", subjects: [ "Biology", "Chemistry" ] }
    Step 8: Querying Arrays
Find students who have "Math" in their subjects.
    db.students.find({ subjects: "Math" });    { _id: ..., name: "Alice", ... }
    { _id: ..., name: "David", ... }
    MongoDB automatically checks if "Math" exists in the array field subjects.
Summary
- find()retrieves all matching documents
- findOne()retrieves a single matching document
- You can filter documents using field values and operators like $gt,$lt,$in, etc.
- Projections control which fields are returned
- Arrays can be queried just like regular fields
Mastering find() and findOne() is essential to efficiently retrieving and understanding your data in MongoDB.












Comments
Loading comments...