MongoDB订单/销售汇总组每月总计+计数字段 [英] MongoDB Orders/sales aggregation group Per Month Sum Total + Count Field

查看:65
本文介绍了MongoDB订单/销售汇总组每月总计+计数字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁知道更好的解决方案,可以按日期对订单进行分组,对合计总额和源进行计数.当然,我可以按来源分组,然后仅获得该来源的总数,之后可以更改结果以得到所需的结果.但是我想知道是否可以用一个简单的 $ group 语句.

Who knows a better solution to group Orders by date and sum total and count by source. Of course I can group by Source and then I get only totals for this source only, I can alter the result thereafter to get the desired result. But I would like to know if it is possible in one simple $group statement.

例如. ordersByApp = 1,ordersByWEB = 2

订单收集

{
 _id: 'XCUZO0',
 date: "2020-02-01T00:00:03.243Z"
 total: 9.99,
 source: 'APP'
},
{
 _id: 'XCUZO1',
 date: "2020-01-05T00:00:03.243Z"
 total: 9.99,
 source: 'WEB'
},
{
 _id: 'XCUZO2',
 date: "2020-01-02T00:00:03.243Z"
 total: 9.99,
 source: 'WEB'
}

我当前的汇总

Order.aggregate([
   {
     $group: {
        _id: {
           month: { $month: "$date",
           year: { $year: "$date" } 
        },
        total: {
           $sum: "$total"
        } 
     }
   }
])

当前结果

[
  {
    _id: { month: 01, year: 2020 },
    total: 19.98
  },
  {
    _id: { month: 02, year: 2020 },
    total: 9.99
  }
]

期望的结果,如何实现以下目标?

Desired result, How can I achieve the below?

[
  {
    _id: { month: 01, year: 2020 },
    total: 19.98,
    countByApp: 1, <---
    countByWEB: 0, <---
  },
  {
    _id: { month: 02, year: 2020 },
    total: 9.99,
    countByWEB: 2, <---
    countByAPP: 0  <---
  }
]

推荐答案

您可以使用

蒙戈游乐场

这篇关于MongoDB订单/销售汇总组每月总计+计数字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆