填写记录中缺失的日期 - Nodejs Mongoose

时间:2021-02-07 12:26:44

标签: node.js mongoose

我正在使用此查询来获取当前一周 7 天的订单数。我得到的结果是这样的:

[
   { _id: '2021-01-31', orders: 3 },
   { _id: '2021-02-01', orders: 1 },
   { _id: '2021-02-02', orders: 2 },
   { _id: '2021-02-06', orders: 2 }
]

问题是,如果在特定日期没有订单,则该日期的订单数应为 0。例如{ _id: '2021-02-03', orders: 0 },03-02-2021没有订单,应该是0。

这是我正在使用的查询:

    let d = new Date()
    d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
    d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
    let yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
    let weekNumber = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
const ordersweekly = await Order.aggregate([
        {
          "$set": { "date": { "$week": "$createdAt" } }
        },
        {
          "$match": { "date": weekNumber }
        },
        {
          "$set": { "date": { "$dateToString": { "format": "%Y-%m-%d", "date": "$createdAt" } } }
        },
        {
          "$group": { "_id": "$date", "orders": { "$sum": 1 } }
        },
        { "$sort": { "_id": 1 } }
    ])

0 个答案:

没有答案
相关问题