node.js – mongodb中的聚合函数

我有一个db数据如下

{
"_id" : ObjectId("5a2109572222085be93ef10d"),"name" : "data1","date" : "2017-12-01T00:00.0Z","status" : "COMPLETED"},{
"_id" : ObjectId("5a2109572222085be93ef10d"),"status" : "Failed"}

我想要一个agreagate输出如下

{ date:”2017-12-01T00:00:0Z”,total:”2″,completed:1,Failed:1 }

我试过这段代码,但没有产生上面的结果

db.test.aggregate([
{$group: {_id : {date : '$date',status:'$status'},total:{$sum :1}}},{$project : {date : '$_id.date',status : '$_id.status',total : '$total',_id : 0}}
])

解决方法

db.test.aggregate(

// Pipeline
[
    // Stage 1
    {
        $group: {
         _id:"$date",total:{$sum:1},Failed:{$sum:{$cond:[{$eq:["$status","Failed"]},1,0]}},completed:{$sum:{$cond:[{$eq:["$status","COMPLETED"]},0]}}
        }
    },// Stage 2
    {
        $project: {
            date : '$_id',total : 1,Failed : 1,completed : 1,_id : 0,}
    },]
);

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...