Open In App
Related Articles

How does Query.prototype.map() works in Mongoose ?

Improve Article
Improve
Save Article
Save
Like Article
Like

The Query.prototype.map() function is used to run a function fn and treats the return value of fn as the new value for the query to resolve to. All the function which are passed to map() function will be run after any post hooks. 

Syntax:  

Query.prototype.map()

Parameters: This function has one parameter fn which is function to run to transform the query result.
Return Value: This function returns Query Object.

Mongoose Installation:

npm install mongoose

After installing the mongoose module, you can check your mongoose version in command prompt using the command. 

npm mongoose --version

After that, you can just create a folder and add a file for example, index.js as shown below.

Database: The sample database used here is shown below:  

Example 1:

Here, the filename is index.js

Javascript




const mongoose = require('mongoose');
 
// Database connection
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
});
 
// User model
const User = mongoose.model('User', {
    name: { type: String },
    age: { type: Number }
});
 
const query = User.find({name:"Lalit"}).map(res => {
     
  console.log("loadedAt property set on the doc "
       + "to tell the time doc was loaded.")
  return res == null ? res : Object.assign(res,
       { loadedAt: new Date() });
});
 
query.exec(function(err, res){
    if(err) console.log(err)
    else console.log(res)
});


The project structure will look like this: 

Run index.js file using below command: 

node index.js

Output: 

loadedAt property set on the doc to tell the time doc was loaded.
[
  { _id: 5ebc3669a99bde77b2efb9ba, name: 'Lalit', age: 25, __v: 0 },
  loadedAt: 2020-07-14T18:22:57.991Z
]

Example 2:

Here, the filename is index.js

Javascript




const express = require('express');
const mongoose = require('mongoose');
const app = express()
 
// Database connection
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
});
 
// User model
const User = mongoose.model('User', {
    name: { type: String },
    age: { type: Number }
});
 
const query = User.find().map(res => {
     
 console.log("loadedAt property set on the doc "
      + "to tell the time doc was loaded.")
 return res == null ? res : Object.assign(res,
      { loadedAt: new Date() });
 
});
 
query.exec(function(err, res){
    if(err) console.log(err)
    else console.log(res)
});
 
app.listen(3000, function(error ) {
    if(error) console.log(error)
    console.log("Server listening on PORT 3000")
});


The project structure will look like this: 

Run index.js file using below command: 

node index.js

Output: 

Server listening on PORT 3000
Server listening on PORT 3000
loadedAt property set on the doc to tell the time doc was loaded.
[
  { _id: 5ebb9129a99bde77b2efb809, name: 'Gourav', age: 10, __v: 0 },
  { _id: 5ebc3669a99bde77b2efb9ba, name: 'Lalit', age: 25, __v: 0 }, 
  { _id: 5ebc367da99bde77b2efb9bf, name: 'Piyush', age: 5, __v: 0 }, 
  { _id: 5ebd345f5d2d8a3534b2f391, name: 'Manish', age: 34, __v: 0 },
  loadedAt: 2020-07-14T18:24:36.890Z
]

Reference: https://mongoosejs.com/docs/api/query.html#query_Query-map
 


Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!

Last Updated : 31 Jul, 2021
Like Article
Save Article
Previous
Next
Similar Reads
Complete Tutorials