Using the Mongoose Model.find() function (with examples)

Updated: December 30, 2023 By: Guest Contributor Post a comment

Mongoose’s Model.find() function is quintessential for querying documents from a MongoDB database using the Mongoose ORM in a Node.js environment. It allows you to retrieve a set of documents that match given criteria. This function was available in Mongoose since its early versions, adapting and evolving over the years with JavaScript and Node.js standards, including the incorporation of Promises and async/await.

The purpose of the Model.find() method is to search for documents within a MongoDB collection and return them as an array of document instances. It supports query conditions, projection, and options like sorting, limiting the number of documents, etc.

Syntax and Parameters

Model.find(query, [projection], [options], [callback])
  • query: specifies the conditions that documents must meet to be selected.
  • projection: optionally specifies the fields to return.
  • options: additional options such as sort, limit, skip, etc.
  • callback: optional callback for handling the results. If not provided, find() will return a Promise.

When the callback is not provided, find() returns a Promise which, when resolved, yields an array of documents matching the criteria.

Code Examples

Basic Find Example

The code below shows you how to get documents without any conditions:

import mongoose from 'mongoose';
const { Schema, model } = mongoose;


const userSchema = new Schema({ name: String, age: Number });
const User = model('User', userSchema);

async function findUsers() {
  const users = await User.find();


Query Conditions Example

This example retrieves documents that match specific conditions:

... // assume previous User model declaration

async function findSpecificUsers() {
  const youngUsers = await User.find({ age: { $lt: 30 } });


Projection Example

In this example, we’ll retrieve only specified fields from matching documents:

... // assume previous User model declaration

async function findUserNames() {
  const names = await User.find({}, 'name');


Complex Query with Options

This example demonstrates sorting and limiting results:

... // assume previous User model declaration

async function findSortedLimitedUsers() {
  const sortedUsers = await User.find({}, null, { limit: 5, sort: 'age' });



The Model.find() function is a robust and vital part of Mongoose’s querying capabilities, offering flexibility and efficiency when handling MongoDB data. Through its evolving syntax and conformance to modern JavaScript practices, it remains an agile tool for Node.js developers.