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