我有MongoDB数据库,有很多不同的硬币,需要在多级输出中聚合它们,但不确定如何进行.我正在使用Mongoose在后端,需要创建与express 路由,将获得硬币,并以我需要的方式排序,以便我在应用程序内的前端更容易.我在这里找到了很多多级群的例子,但没有一个与我的情况不符,我可以让它发挥作用.
-你是什么意思?
[
{
"_id": "643d5bf4637daa055466d8f0",
"country": "AND",
"denomination": 0.01,
"series": 1
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "AND",
"denomination": 0.01,
"series": 1
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "BEL",
"denomination": 0.01,
"series": 1
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "BEL",
"denomination": 0.02,
"series": 1
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "BEL",
"denomination": 0.5,
"series": 2
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "ESP",
"denomination": 0.2,
"series": 1
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "ESP",
"denomination": 0.05,
"series": 3
}
]
我需要这样的输出
-你在做什么?
[
{
"country": "AND",
"series": [
{
"series": 1,
"coins": [
{
"_id": "643d5bf4637daa055466d8f0",
"country": "AND",
"denomination": 0.01,
"series": 1
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "AND",
"denomination": 0.01,
"series": 1
}
]
}
]
},
{
"country": "BEL",
"series": [
{
"series": 1,
"coins": [
{
"_id": "643d5bf4637daa055466d8f0",
"country": "BEL",
"denomination": 0.01,
"series": 1
},
{
"_id": "643d5bf4637daa055466d8f0",
"country": "BEL",
"denomination": 0.02,
"series": 1
}
]
},
{
"series": 2,
"coins": [
{
"_id": "643d5bf4637daa055466d8f0",
"country": "BEL",
"denomination": 0.5,
"series": 2
}
]
}
]
},
{
"country": "ESP",
"series": [
{
"series": 1,
"coins": [
{
"_id": "643d5bf4637daa055466d8f0",
"country": "ESP",
"denomination": 0.2,
"series": 1
}
]
},
{
"series": 3,
"coins": [
{
"_id": "643d5bf4637daa055466d8f0",
"country": "ESP",
"denomination": 0.05,
"series": 2
}
]
}
]
}
]
到目前为止,我已经完成了这项工作,但不知道如何从这一点开始按正确的顺序推硬币.
const coins = await Coin.aggregate([
{
$group: {
_id: '$country',
series: { $addToSet: { series: '$series', coins: [] } },
},
},
{
$addFields: { country: '$_id' },
},
{
$project: {
_id: 0,
},
},
{
$sort: { country: 1 },
},
]);