我正在使用Node.js制作一个仪表板,显示不同国家不同经济变量的不同图表。我从mongodb数据库获取信息,我必须以特定的方式格式化它,以便可以制作图表(使用Highcharts);我在使用折线图时遇到问题。格式是通过名称变量和数组中的数据点,例如名称:法国,GDP:[8,5,13,11]。通过这段代码我可以毫不费力地得到它。
var Country = require('../models/country');
Country.aggregate([
{
$match: {
name: { $in: ["USA", "China", "India", "France", "Japan"]},
}
},
{
$group: {
_id: '$name',
nominalGDP: {$push: "$nominalGDP"}
}
},
{
$project: {
_id: 0,
name: "$_id",
nominalGDP: 1
}
}
], function(err, recs){
if(err){
console.log(err);
} else {
console.log(recs);
}
});
在这里,我有一个架构,Country,我正在使用mongoose的聚合功能。我匹配我想要的不同国家。然后我按照他们的名字分组我的国家;这很重要,因为我基本上将所有国家和信息都归入一个集合中。因此,我可以有三个不同的行用于美国,一个用于2015,一个用于2016,一个用于2017.因此,我必须按名称对它们进行分组然后$推送每个的名义GDP,以便它可以是一个数组。我现在唯一的问题是确保它们从2015年到2017年按升序正确推入数组,而不是按现在的随机顺序。实现这一目标的最佳方法是什么?如果我需要提供更多细节,请告诉我。
顺便说一下,我必须以这种方式构建我的架构,因为我有一个上传功能,其中架构是从csv文件的导入/上传自动构建的。把它带到我有两个表的位置,一个用于国家名称,另一个用于他们的年份和年份数据,对我来说很难,因为我按照当前的方式进行了教程lol