如何获得与一年中的周数相对应的日期

问题描述 投票:0回答:1

我对 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
          }
        }
      }
    },
      ]);
javascript reactjs mongodb mongodb-query
1个回答
1
投票

您可以执行以下操作:

  1. 使用
    $year
    $isoWeek
    获取特定日期的年份和周数
  2. 使用
    $dateFromParts
    "isoDayOfWeek": 1
    转换回您想要的星期一
db.collection.aggregate([
  {
    "$addFields": {
      "monday": {
        $dateFromParts: {
          "isoWeekYear": {
            $year: "$createdAt"
          },
          "isoWeek": {
            $isoWeek: "$createdAt"
          },
          "isoDayOfWeek": 1
        }
      }
    }
  }
])

这里是Mongo游乐场供您参考。

© www.soinside.com 2019 - 2024. All rights reserved.