mcms-node-eshop
Version:
Eshop module for mcms-node
45 lines (41 loc) • 1.48 kB
JavaScript
module.exports = (function(App,Connection,Package){
var lo = require('lodash'),
categoryModel = App.Connections[App.Config.database.default].models.ProductCategory,
productModel = App.Connections[App.Config.database.default].models.Product,
ids = [];
return function(catIds,options,callback){
if (lo.isObject(catIds[0])){
for (var a in catIds){
ids.push(catIds[a].id);
}
catIds = ids;
}
ids = lo.uniq(lo.flatten(catIds));
ids = App.Helpers.MongoDB.arrayToObjIds(ids);
//aggregate to get counts per category
productModel.aggregate([
{$match: { categories: { $in: ids } } },
{$project: { _id: 0, id : '$_id', categories: 1 } },
{$unwind: "$categories" },
{$match: { categories: { $in: ids } } },
{
$group: {
_id: {
items: '$id', categories: '$categories'
},
"count": {"$sum": 1}
}
},
{
$group: {
_id: {
items: '$_id.categories'
},
"count": {"$sum": 1}
}
},
{$project: { _id: 0,categories: "$_id.items", count: 1 } }
])
.exec(callback);
};
});