我有以下MongoDB查询:
db.collection.aggregate([{
$match : { platform_id : ... }
}, {
$group: {
_id: "$type",
count: { $sum: 1 }
}
}]);
$type
的可能值为0
或1
。
现在,如果有任何类型值(0或1)的记录,我会得到0
和1
的计数。
但是,如果所有记录都具有相同的类型(例如1),我如何将0
的计数设为0?
从this帖子看,它看起来可能无法实现。在这种情况下是真的吗?
答案 0 :(得分:0)
只有汇总无法满足您的目标。之后需要一些JS代码。
var aggr = db.collection.aggregate([{
$match : { platform_id : ... }
}, {
$group: {
_id: {$ifNull : ["$type", 0]},
count: { $sum: 1 }
}
}]);
var result = aggr.toArray(); // mongo shell V2.6+
// var result = aggr.result; // mongo shell before V2.6
[{_id : 0, count : 0}, {_id : 1, count : 0}].forEach(function(e) {
var i = 0;
var len = result.length;
while (i < len && e._id != result[i]._id) ++i;
if (i >= len) result.push(e);
});
// result is the final.