如何获得每个标签的产品数量

时间:2016-09-15 17:17:03

标签: mongodb mongodb-query aggregation-framework

我正在使用mongodb的loopback js。 我的产品系列如下:

{
  tag1 : 1,
  tag2 : 2,
  tag3 : 2
}

我需要找到按标签分组的产品数量,例如 预期结果:

productCollection.aggregate(
                        {$match: {
                            is_available: true
                        } },
                        {$unwind:"$tags"},
                        { $group : {
                            _id:"$tags",
                            "products" : { "$sum" : 1 }
                            }
                        },function(err,totals){});

我试图实现这一点:

tags

但是上面的内容是基于整个Cert Issued (30)属性而不是每个单独的标记进行分组。我错过了什么?我是否需要以某种方式放松并投射它?

1 个答案:

答案 0 :(得分:0)

有很多方法可以获得你想要的结果。但是,如果您期望精确的文档格式,请尝试使用mongo shell。

var obj = {};

db.collection.aggregate([
    {$unwind:"$tags"},
    {$group:{_id:"$tags", count:{$sum:1}}}
]).forEach(function(doc){
    obj[doc._id] = doc.count;
});

printjson(obj);

这应该发出。

{ 
    "tag1" : NumberInt(1), 
    "tag3" : NumberInt(2), 
    "tag2" : NumberInt(2)
}

希望能给你一些指示。