Mongodb Mongo聚合过滤器

Mongodb Mongo聚合过滤器,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我们有几个map reduce作业在调度器上运行,并为我们聚合一些计数。我们希望将这些转换为实时聚合调用。问题是,map reduce在其无限的灵活性中,针对其运行的集合计算了4个不同的计数。例如: var result = { MessageId: this.MessageId, Date: this.Created, Queued : (this.Status == 0 ? 1 : 0), Sent : (this.St

我们有几个map reduce作业在调度器上运行,并为我们聚合一些计数。我们希望将这些转换为实时聚合调用。问题是,map reduce在其无限的灵活性中,针对其运行的集合计算了4个不同的计数。例如:

var result =
    {
        MessageId: this.MessageId,
        Date: this.Created,
        Queued : (this.Status == 0 ? 1 : 0),
        Sent : (this.Status == 1 ? 1 : 0),
        Failed : (this.Status == 2 ? 1 : 0),
        Total : 1,
        Unsubscribes: 0
    };

如果我在SQL中,我不认为我可以通过一个GROUPBY/SUM来实现这一点,因为我需要为每个SUM使用不同的过滤器。是否可以在mongo中运行,或者我是否需要使用不同的$match子句运行4个单独的$group语句?

您可以在
$project
中使用
$cond
来执行此类操作,如在中。很酷,谢谢。有什么方法可以将我的答案标记为重复答案还是删除它?可能的重复答案可以单击“关闭”进行投票,将你的问题作为重复答案关闭,就像我刚才做的一样。