从 mongodb 中选择本月的日期 (mm-dd-yyyy)

Selecting dates(mm-dd-yyyy) this month from mongodb

我如何才能 select 我的 mongodb 日期只有这个月,我有一个 date:{type:String} 并且我的格式是:mm-dd-yyyy 例如:09-03-2019:

这是我的路由器,用于获取不同的日期然后计算它们,但不是每月:

router.get('/blooddonationarea', function(req, res) {
    sess=req.session;
    Blooddonation.aggregate([{$group: {_id : "$date" , count :{$sum:1}}},{$sort: {_id: 1}}],function(err, date) {     
    res.json({ success: true, date: date });

    });       
});

产生:

[ { _id: '04-11-2019', count6: 1 },
  { _id: '05-21-2019', count6: 1 },
  { _id: '10-11-2019', count6: 3 },
  { _id: '10-22-2019', count6: 1 } ]

我想要的输出是显示日期,例如 date = month.now() 然后它将只显示 01-dd-yyyy 的月份。

我试过这个:

const startOfMonth = moment().startOf('month').format('MM-DD-YYYY')
const endOfMonth = moment().endOf('month').format('MM-DD-YYYY')

        Blooddonation.aggregate([
        { "$match": {
            "date": { "$gte": startOfMonth, "$lte": endOfMonth }
        }},
        { "$group": { "_id": "$date", "count": { "$sum": 1 } } },
        { "$sort": { "_id": 1 } }],function(err, date) {     
            res.json({ success: true, date: date });
            console.log("dates are" + date);
        });              
    });

您可以使用 moment 库获取所需的格式,然后使用 $gte$lte 运算符仅获取当月的数据

const moment = require('moment')

const startOfMonth = moment().startOf('month').format('MM-DD-YYYY')
const endOfMonth = moment().endOf('month').format('MM-DD-YYYY')

Blooddonation.aggregate([
  { "$match": {
    "date": { "$gte": startOfMonth, "$lte": endOfMonth }
  }}
  { "$group": { "_id": "$date", "count": { "$sum": 1 } } },
  { "$sort": { "_id": 1 } }
])