'Node.js how to use mongoose to do filter and pagination

I get all data successfully in my node.js code using Profile.find(),but when I want to add filter in api, it get 500 error.

Profile.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

//Create Schema
const ProfileSchema = new Schema({
    type: {
        type: String,
    },
    description: {
        type: String,
    },
    cash:{
        type: String,
        required: true,
    }
    
})

module.exports = Profile = mongoose.model("profile",ProfileSchema);

api.js

const router = express.Router();
const Profile = require('../../models/Profile');

router.get("/",passport.authenticate('jwt',{session:false}),(req, res) => {
    Profile.find().then(profiles => {
        res.json(profiles)
    })//works
     
})
router.get("/",passport.authenticate('jwt',{session:false}),(req, res) => {

    var condition = {'cash' : '5000'};
    Profile.find(condition,function(err,res){//error for this
        res.json(res)
    })
})

I am new to mongoose and do not sure how to do the filter and pagination for my code. Appreciate for any kind help.

Update

Thanks to @Amila Senadheera, I finally find the solution to do filter and pagination using below code:

var condition = { cash: '5000' };
Profile.find(condition).skip(1).limit(10).then(profiles => { 
    res.json(profiles)
})

To use aggregation, it works like below:

router.post(
    "/",
    passport.authenticate("jwt", { session: false }),
      async (req, res) => {
        // page index
        let pageIndex = 1;
        // profiles per page
        let pageSize = 10;

        if (req.body.pageIndex !== null || req.body.pageIndex !== "undefined") {
            pageIndex = req.body.pageIndex;
        }

        if (req.body.pageSize !== null || req.body.pageSize !== "undefined") {
            pageSize = req.body.pageSize;
        }

        let condition = { description: "1" };
        try {
            const getAllProfile = await  Profile.aggregate([{
                $facet: {
                    data:[
                        { $match: condition },
                        { $skip: (pageIndex - 1) * pageSize },
                        { $limit: pageSize },
                       
                    ],
                    totalCount:[
                        { $match: condition },
                        { $count: 'totalCount' }
                    ]
                }
          
            }]) ; 
            res.json(getAllProfile);
        } catch (error) {
            res.status(404).json(error);
        }
      
    }
);


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source