Open In App

Mongoose Queries Model.findOneAndUpdate() Function

The Queries Model.findOneAndUpdate() function of the Mongoose API is used to find and update an existing document with the information mentioned in the “update” object. It finds and updates only the first document that is returned in the filter.

Syntax:



Model.findOneAndUpdate(conditions, update, options, callback)

Parameters: It accepts the following 4 parameters as mentioned above and described below:

Return type: It returns a Query object as a response.



Setting up Node.js Mongoose Module:

Step 1: Create a Node.js application using the following command:

npm init

Step 2: After creating the NodeJS application, Install the required module using the following command:

npm install mongoose

The below examples will demonstrate the findOneAndUpdate() method.

Example 1: In this example, we will use this method to find and update an existing document that has the name “Luffy”.




const mongoose = require('mongoose')
  
// Database connection
    {
        dbName: 'event_db',
        useNewUrlParser: true,
        useUnifiedTopology: true
    }, err => err ? console.log(err)
        : console.log('Connected to database'));
  
const personSchema = new mongoose.Schema({
    name: {
        type: String,
        select: false
    },
    age: {
        type: Number,
    }
});
  
const personsArray = [
    {
        name: 'Luffy',
        age: 19
    },
    {
        name: 'Nami',
        age: 30
    },
    {
        name: 'Zoro',
        age: 35
    }
]
  
const Person = mongoose.model('Person', personSchema);
  
(async () => {
    await Person.insertMany(personsArray);
    await Person.findOneAndUpdate(
        { name: 'Luffy' }, 
        { name: 'Shanks' }
    );
})()

Step to Run Application: Run the application using the following command from the root directory of the project:

node main.js

Output:

 

GUI Representation of the Database using MongoDB Compass:

 

Example 2: In this example, we will use this method to find and update an existing document that has the age “19”.




const mongoose = require('mongoose')
  
// Database connection
    {
        dbName: 'event_db',
        useNewUrlParser: true,
        useUnifiedTopology: true
    }, err => err ? console.log(err)
        : console.log('Connected to database'));
  
const personSchema = new mongoose.Schema({
    name: {
        type: String,
        select: false
    },
    age: {
        type: Number,
    }
});
  
const personsArray = [
    {
        name: 'Luffy',
        age: 19
    },
    {
        name: 'Nami',
        age: 30
    },
    {
        name: 'Zoro',
        age: 35
    }
]
  
const Person = mongoose.model('Person', personSchema);
  
(async () => {
    await Person.insertMany(personsArray);
    await Person.findOneAndUpdate({ age: 19 }, { age: 23 });
})()

Step to Run Application: Run the application using the following command from the root directory of the project:

node main.js

Output:

 

GUI Representation of the  Database using MongoDB Compass:

 

Reference: https://mongoosejs.com/docs/api.html#model_Model-findOneAndUpdate


Article Tags :