Tutorialsteacher

Follow Us

Articles
  • C#
  • C# OOP
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • Inversion of Control (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go lang
  • HTTPS (SSL)
  • Regex
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
  • MongoDB - Get Started
  • What is MongoDB?
  • Install MongoDB
  • MongoDB Server
  • MongoDB Shell
  • MongoDB Shell Commands
  • MongoDB Compass
  • MongoDB Database
  • MongoDB Collections
  • MongoDB Documents
  • Insert Single Document
  • Insert Multiple Documents
  • Import Data into Collection
  • Find Single Document
  • Find Multiple Documents
  • MongoDB Cursor
  • MongoDB Sort Documents
  • Update Single Document
  • Update Multiple Documents
  • Update Arrays
  • Update Embedded Documents
  • Delete Documents
  • Relations in MongoDB
  • Aggregation in MongoDB
Entity Framework Extensions - Boost EF Core 9
  Bulk Insert
  Bulk Delete
  Bulk Update
  Bulk Merge

MongoDB: Find Documents in Collection using find()

In MongoDB, a collection represents a table in RDBMS and a document is like a record in a table. Here you will learn how to retrieve or find one or more documents from a collection.

MongoDB provides two methods for finding documents from a collection:

  1. findOne() - returns a the first document that matched with the specified criteria.
  2. find() - returns a cursor to the selected documents that matched with the specified criteria.

The following inserts documents in the employees collection.

Sample Data
db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000,
        skills: [ "Angular", "React", "MongoDB" ],
        department: { 
                    "name":"IT" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000,
        skills: [ "Accounting", "Tax" ],
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500,
        skills: [ "Sales", "Marketing" ],
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500,
        skills: [ "Accounting", "Tax" ],
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])

Find Documents using the find() Method

The find() method finds all the documents that matches with the specified criteria and returns the cursor object. The cursor object is a pointer to the result set.

Syntax:

db.collection.find(query, projection)

Parameters:

  1. query: Optional. Specifies the criteria using query operators.
  2. projection: Optional. Specifies the fields to include in a resulted document.

The find() returns all the documents from a collection if no parameter is passed. The following executes the db.employees.find() in mongosh shell:

humanResourceDB> db.employees.find()
[
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000,
        skills: [ "Angular", "React", "MongoDB" ],
        department: { "name":"IT" }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000,
        skills: [ "Accounting", "Tax" ],
        department: { "name":"Finance" }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500,
        skills: [ "Sales", "Marketing" ],
        department: { "name":"Marketing" }
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500,
        skills: [ "Accounting", "Tax" ],
        department: { "name":"Finance" }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
]

Executing db.collection.find() in mongosh shell automatically iterates the cursor to display up to the first 20 documents. Type it to continue iteration.

You can specify the criteria as { field: "value", field:"value",..} on which you want to find a document. For example, the following returns all the documents where salary is 7000.

Example: find(criteria)
db.employees.find({salary: 7000})
Output
[{ 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
]

The find() method performs the case-sensitive search, so {firstName: "Kapil"} and {firstName: "kapil"} returns different result.

Use the query operators for more refined search. For example, the following finds the first document where salary is greater than 8000.

Example: find() with Query Operator
db.employees.find({salary: {$gt: 7000}})
Output
[{
    _id: 2,
    firstName: 'Sachin',
    lastName: 'T',
    email: '[email protected]',
    salary: 8000,
    skills: [ 'Accounting', 'Tax' ],
    department: { name: 'Finance' }
  },
  {
    _id: 3,
    firstName: 'James',
    lastName: 'Bond',
    email: '[email protected]',
    salary: 7500,
    skills: [ 'Sales', 'Marketing' ],
    department: { name: 'Marketing' }
  }]

Specify multiple criteria by adding another query operator as field. The following retrieves documents whose salary field is greater than 7000 and less than 8000.

Example: find() with Multiple Query Operator
db.employees.find({salary: {$gt: 7000, $lt: 8000}})
Output
[{
    _id: 3,
    firstName: 'James',
    lastName: 'Bond',
    email: '[email protected]',
    salary: 7500,
    skills: [ 'Sales', 'Marketing' ],
    department: { name: 'Marketing' }
  }]

Query Embedded Document

You can specify criteria for embedded document fields using dot notation, as shown below.

Example: find() with Multiple Query Operator
db.employees.find({ "department.name": "Finance"})
Output
[
  {
    _id: 2,
    firstName: 'Sachin',
    lastName: 'T',
    email: '[email protected]',
    salary: 8000,
    skills: [ 'Accounting', 'Tax' ],
    department: { name: 'Finance' }
  },
  {
    _id: 5,
    firstName: 'Kapil',
    lastName: 'D',
    email: '[email protected]',
    salary: 4500,
    skills: [ 'Accounting', 'Tax' ],
    department: { name: 'Finance' }
  }
]

Query Array Elements

You can find documents based on the array element, index, or size.

Example: find() on Array
db.employees.find({ "skills": "Tax"}) //returns documents where skills contains "Tax"
db.employees.find({ "skills":  { $in: [ "Tax", "Sales" ]}}) //returns documents where skills contains "Tax" or "Sales"
db.employees.find({ "skills":  { $all: [ "Tax", "Accounting" ]}}) //returns documents where skills contains "Tax" and "Accounting"
db.employees.find({ "skills":  { $size: 3}) //returns documents where skills contains 3 elements

Projection

Use the projection parameter to specify the fields to be included in the result. The projection parameter format is {<field>: <1 or true>, <field>: <1 or true>...} where 1 or true includes the field, and o or false excludes the field in the result.

Example: find()
db.employees.find({salary: 7000}, {firstName:1, lastName:1})
Output
[{ 
    _id:4,
    firstName: "Steve",
    lastName: "J",
},
{ 
    _id:6,
    firstName: "Amitabh",
    lastName: "B",
}]

Note that by default, the _id field will be included in the result. To omit it, specify { _id:0 } in the projection.

Example: find()
db.employees.findOne({firstName: "Sachin"}, {_id: 0, firstName:1, lastName:1})
Output
[{ 
    firstName: "Steve",
    lastName: "J",
},
{ 
    firstName: "Amitabh",
    lastName: "B",
}]
TUTORIALSTEACHER.COM

TutorialsTeacher.com is your authoritative source for comprehensive technologies tutorials, tailored to guide you through mastering various web and other technologies through a step-by-step approach.

Our content helps you to learn technologies easily and quickly for learners of all levels. By accessing this platform, you acknowledge that you have reviewed and consented to abide by our Terms of Use and Privacy Policy, designed to safeguard your experience and privacy rights.

[email protected]

ABOUT USTERMS OF USEPRIVACY POLICY
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) All Rights Reserved.