Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 本年度月度利润数组的汇总结果_Javascript_Node.js_Mongodb_Aggregation Framework - Fatal编程技术网

Javascript 本年度月度利润数组的汇总结果

Javascript 本年度月度利润数组的汇总结果,javascript,node.js,mongodb,aggregation-framework,Javascript,Node.js,Mongodb,Aggregation Framework,非常不言自明。 我搜索了多个mongo聚合文档,并尽我所能构建了查询。 值得指出的是,我几乎没有聚合经验,这是我迄今为止所做的最复杂的聚合之一 let currentYear = new Date(); currentYear.setFullYear(currentYear.getFullYear()); currentYear.setMonth(0); currentYear.setDate(1); await Order.agg

非常不言自明。 我搜索了多个mongo聚合文档,并尽我所能构建了查询。 值得指出的是,我几乎没有聚合经验,这是我迄今为止所做的最复杂的聚合之一

let currentYear = new Date();
        currentYear.setFullYear(currentYear.getFullYear());
        currentYear.setMonth(0);
        currentYear.setDate(1);
        await Order.aggregate([
            { $match: {
                order_ordered_on:{
                    $gte: currentYear
                },
                order_status: 'Delivered'
            }},
            { $group : { 
                _id: {month: {$month : '$order_ordered_on'}},
                total: {$sum: '$order_total'},
            }},
            { $sort : {
                _id : 1
            }},
            {$project: {
                _id:1,
                total: 1
            }}
        ]).exec((err, result) =>{
            if (err) throw err;
            let amount = result.map(a => a.total);
            res.json({
                amount
            });
        })
为了解释我的思维过程,首先我为今年设定了一个日期,从1月1日到当前时间。 然后,我将其与订单匹配,订单上有我工作的日期,并且还匹配以仅选择具有已交付状态的订单。 我按id分组,将其分为几个月,并将总金额按月份相加。 按升序排序对数组进行排序并投影结果数据。 之后,我将结果映射到一个数组,这是我的目标(数组中的每个位置对应一个月的利润)

问题是返回的总值是荒谬的,并且与预期值不匹配。因为我没有太多的经验,我找不到我犯错误的地方。 感谢您的帮助

为了让我自己更清楚,我目前使用的是单一订单模型,以及Order_ordered_on、Order_status和Order_total字段


该合计的主要目标是将当前年度利润拆分为每月利润,从1月1日到现在,然后通过前端开发将其绘制在图表中。该数据包含从2017年到当天的订单。前端需要接收的格式是带有利润值的有序数组。

查询工作正常;我尝试了一些测试数据,也得到了正确的输出。很可能,您的输入数据并不像您期望的那样。我的测试数据(3个文档):
{id:1,订单状态:“已交付”,订单总数:200,订单状态:“已交付”,订单id:2,订单状态:“已交付”,订单总数:18,订单状态:已交付,订单日期:ISODate(“2019-12-02T14:00:11.001Z”)},{id:3,订单状态:“已交付”,订单总数:95,订单日期:ISODate(“2019-11-26T12:00:001Z”)}
@prasad_uu我更改了一点代码,并添加了一个计数来检查查询结果是否有意义,在手动重新排列和结果比较之后,事实上查询工作正常。谢谢你向我确认这是正确的,它让我亲自检查结果以确定。