【发布时间】:2021-04-15 16:20:38
【问题描述】:
我有一个项目集合,每个项目都有一个类型(水果、蔬菜等)和一个 ID:
type: 'Fruit',
_id: '0'
type: 'Vegetable',
_id: '1'
type: 'Fruit',
_id: '2'
然后我有一个购买集合,每个购买引用一个项目:
item_id: '2'
item_id: '1'
item_id: '0'
item_id: '2'
现在我可以使用以下代码获得最畅销的商品:
buySchema.aggregate([
{ $group: { _id: "$item_id", numFills: { $sum: 1 } } },
{ $sort: { numFills: -1 } }
]).limit(10).exec(function (err, top) {
if (err) return res.status(400).send('error');
return res.status(200).send(top);
});
此代码输出以下 json:
[
{
"_id": "2",
"numFills": 2
},
{
"_id": "0",
"numFills": 1
},
{
"_id": "1",
"numFills": 1
}
]
我现在想要的是每种类型的顶级列表(一个用于水果,另一个用于蔬菜等),如下所示:
[
{
"type": "Fruits",
"items": [
{
"_id": "2",
"numFills": 2
},
{
"_id": "0",
"numFills": 1
}
]
},
{
"type": "Vegetables",
items: [
{
"_id": "1",
"numFills": 1
}
]
}
]
【问题讨论】:
标签: mongodb mongoose mongodb-query aggregate