skip to Main Content

I’m new to MongoDB. I need to get the count of the posts which are posted in this current month. PlateModel is my model I’ve kept timestamps true also. It looks like the below:

  { timestamps: true }

My present code in the Controller looks like below:

 const today = new Date();
    const host_count = await PlateModel.find({
      $and: [
        {
          postedBy: req.user._id,
        },
        {
          createdAt: today.getMonth(),
        },
      ],
    }).count();

But, I get the count value 0. Can anyone help me to figure out the problem?

2

Answers


  1. You could filter the objects from the start of the current month to the end of the next month:

    const startOfCurrentMonth = new Date();
    startOfCurrentMonth.setDate(1);
    
    const startOfNextMonth = new Date();
    startOfNextMonth.setDate(1);
    startOfNextMonth.setMonth(startOfNextMonth.getMonth() + 1);
    
    const host_count = await PlateModel.find({
      $and: [
        {
          postedBy: req.user._id,
        },
        {
          createdAt: {
              $gte: startOfCurrentMonth,
              $lt: startOfNextMonth
          }
        },
      ],
    }).count();
    
    Login or Signup to reply.
  2. You can use the Moment library.

    const moment = require("moment");
    
    const firstdate = moment().startOf('month').format('DD-MM-YYYY');
    console.log(firstdate);
    
    const lastdate=moment().endOf('month').format("DD-MM-YYYY"); 
    console.log(lastdate);
    
     
    const host_count = await PlateModel.find({
      $and: [
        {
          postedBy: req.user._id,
        },
        {
          createdAt: {
              $gte:firstdate,
              $lt:lastdate
          }
        },
      ],
    }).count();
    
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search