我正在使用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)
属性而不是每个单独的标记进行分组。我错过了什么?我是否需要以某种方式放松并投射它?
答案 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)
}
希望能给你一些指示。