#javascript #reactjs #mongodb #mongodb-query
Вопрос:
Я довольно новичок в javascript и работаю над созданием панели мониторинга. Я хочу получить количество заказов в неделю, что мне удалось сделать. Прямо сейчас я получаю номер, соответствующий неделе года, однако я хотел бы получить дату (понедельник), соответствующую этой неделе. Я включил то, что у меня есть ниже. Я был бы признателен за любую помощь или руководство о том, как это сделать. Спасибо!
const weeklyOrders = await Order.aggregate([
{
$group: {
_id: { $dateToString: { format: '%U', date: '$createdAt' } },
orders: { $sum: 1 },
},
},
{ $sort: { _id: 1 } },
]);
Редактировать:
const weeklyOrders = await Order.aggregate([
{
$group: {
_id:{ $dateFromParts: {
isoWeekYear: {$year: '$createdAt' },
isoWeek: { $isoWeek: '$createdAt' },
isoDayOfWeek: 1
},
},
orders: { $sum: 1 },
},
},
{ $sort: { _id: 1 } },
]);
Сработало, но дата указана в формате даты ISO. Я попытался исправить это в приведенном ниже коде, но это не сработало.
const weeklyOrders = await Order.aggregate([
{
$group: {
_id:{ date: {
$dateToString: { format: '%m-%d-%Y' },
},
},
orders: { $sum: 1 },
},
},
{ $sort: { _id: 1 } },
{
$addFields:{
date: {
$dateFromParts: {
isoWeekYear: {$year: '$createdAt' },
isoWeek: { $isoWeek: '$createdAt' },
isoDayOfWeek: 1
}
}
}
},
]);
Ответ №1:
Вы можете сделать следующее:
- используйте
$year
и$isoWeek
, чтобы получить номер года и недели для определенной даты $dateFromParts
используйте с, чтобы преобразовать обратно в то, что вы хотите"isoDayOfWeek": 1
Вот игровая площадка Монго для вашей справки.
Комментарии:
1. Хорошо, спасибо тебе! Есть ли способ отформатировать дату в формате ММ-ДД-ГГГГ вместо формата даты ISO? Я попытался сделать это в отредактированной части своего вопроса, но это не сработало.
2. Вы забыли указать
date
стоимость. попробуйте что-нибудь вроде{$dateToString: {date: $createdAt",format: "%m-%d-%Y"}