Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 2x 2x 2x 77x 6x | import OrdersModel from "../../models/Orders.js"; export default async function ordersStatistics(year = new Date().getFullYear()) { try { const result = await OrdersModel.aggregate([ { $match: { $expr: { $eq: [{ $year: "$createdAt" }, +year] } } }, { $group: { _id: "orders", totalOrders: { $count: {} }, completedOrders: condition("Completed"), pendingOrders: condition("Pending"), canceledOrders: condition("Canceled") } } ]); return result.length ? { year, statistics: result[0] } : { year, statistics: { totalOrders: 0, completedOrders: 0, pendingOrders: 0, canceledOrders: 0 } } } catch (error) { console.log(error) return; } } const condition = (state) => { return { $sum: { $cond: { if: { $eq: ["$state", state] }, then: 1, else: 0, } } } } |