如果没有匹配,如何在聚合中返回count:0

时间:2014-11-20 16:58:29

标签: mongodb aggregation-framework

我遇到的问题我认为会经常发生,但在研究期间我无法找到足够的信息。

我的问题是我希望返回的查询具有给定的JSON格式,但是当匹配过滤掉所有文档时,我得不到json。

一个简单的例子:如果文档符合给定条件,我想计算,所以我有以下查询

 db.collection.aggregate( [{ 
       $match: {
            type: /^1[.]2[.]3[.].*$/
        }
    }, {
        $group: {
            _id: {$ifNull : ["$type", 0]}, 
            count: { $sum: 1 }
        }
    }]);

如果我至少有一个匹配的文档,则查询有效:

{ "_id" : "1.2.3", "count" : 44 }

如果我没有文件,我想收到这样的json:

{ "_id" : "1.5.3", "count" : 0 }

这可能吗?

ps:这是一个简化的案例,在应用程序端处理它并不那么容易,所以我宁愿尝试调整我的查询

0 个答案:

没有答案