mongodb聚合,分组和排序

时间:2014-01-24 16:05:23

标签: mongodb

我需要mongo中的查询帮助,我想在帖子posts中获取status: 'accepted标记,对标记进行分组并按出现次数进行排序。

db.collection('Posts').aggregate([{
        $project: {
                tags: 1
        }
}, {
        $unwind: "$tags"
}, {
        $group: {
                _id: {
                        tag: "$tags"
                },
                count: {
                        $sum: 1
                }
        }
}], function (error, result) {
        // do stuff
});

这有效,但它们不按count字段排序,我不知道如何只选择状态为accepted的帖子。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

要按状态过滤帖子,您可以使用$match运算符。要按计数排序,您应该使用$sort运算符。

查询的更新版本应该是:

db.collection('Posts').aggregate([
{$match : {status : "accepted"}},
{$project: {tags: 1}}, 
{$unwind: "$tags"}, 
{$group: {_id: {tag: "$tags"},count: {$sum: 1}}},
{$sort : {count : 1}}], 
function (error, result) {
        // do stuff
});