MongoDB 按当月计数

MongoDB Count By Current Month

我是 MongoDB 的新手。我需要获取当月发布的帖子数。 PlateModel 是我的模型,我也保持时间戳为真。看起来像下面这样:

  { timestamps: true }

我目前在控制器中的代码如下所示:

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

但是,我得到的计数值为 0。谁能帮我解决这个问题?

您可以筛选从当月开始到下个月结束的对象:

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();

您可以使用 Moment 库。

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();