Как я могу выбрать даты из моего mongodb только для этого месяца, у меня есть date:{type:String}, и мой формат: mm-dd-yyyy ex: 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.info("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 } }
])
когда я пытался утешить, это дает мне: [объект Object]
Вы использовали обратный вызов или обещание, чтобы получить результат. Я думаю, вы получаете либо курсор, либо обещание !!
Вы можете посмотреть мою правку, я вставил туда то, что пробовал
Попробуйте этот Blooddonation.aggregate([...]).toArray().then((data) => console.info(data)), если вы не используете мангуста.
все еще дает мне [объект Object], что бы я ни пытался, странно
но это работает, когда я пытаюсь отобразить его на своей диаграмме, это странно, но я просто приму это
но он выводит месяцы прошлого года, ха-ха, например, январь 2018, январь 2017
@ GrégoryNEUT Нет, это не сработает. Поскольку он также получит данные за последний год.