Get sources of enquiry based on month
Wed Jun 30 2021 11:07:26 GMT+0000 (Coordinated Universal Time)
Saved by @tapasdash #nodejs #mongoose #mongodb #aggregate
const getSourcesData = asyncHandler(async (req, res) => { const { dealership } = req.user; const month = parseInt(req.params.month); const customerData = await Customer.aggregate() .match({ dealership }) .facet({ fbCount: [ { $match: { sourceOfEnquiry: "Facebook", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "fbCount" }, ], googleCount: [ { $match: { sourceOfEnquiry: "Google", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "googleCount" }, ], cardekhoCount: [ { $match: { sourceOfEnquiry: "Cardekho", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "cardekhoCount" }, ], carwaleCount: [ { $match: { sourceOfEnquiry: "Carwale", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "carwaleCount" }, ], instagramCount: [ { $match: { sourceOfEnquiry: "Instagram", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "instagramCount" }, ], newspaperAdsCount: [ { $match: { sourceOfEnquiry: "Newspaper Ads", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "newspaperAdsCount" }, ], websiteCount: [ { $match: { sourceOfEnquiry: "Website", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "websiteCount" }, ], hoardingsCount: [ { $match: { sourceOfEnquiry: "Hoardings", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "hoardingsCount" }, ], telephonicCount: [ { $match: { sourceOfEnquiry: "Telephonic", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "telephonicCount" }, ], referralCount: [ { $match: { sourceOfEnquiry: "Referral", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "referralCount" }, ], workshopCount: [ { $match: { sourceOfEnquiry: "Workshop", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "workshopCount" }, ], bushfireCount: [ { $match: { sourceOfEnquiry: "Bushfire", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "bushfireCount" }, ], managementCount: [ { $match: { sourceOfEnquiry: "Management", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "managementCount" }, ], walkInCount: [ { $match: { sourceOfEnquiry: "Walk-in", $expr: { $eq: [{ $month: "$createdAt" }, month] }, }, }, { $count: "walkInCount" }, ], }); return res.status(200).json({ success: true, tableData: customerData, }); });
Comments