按年度排序MongoDB数据

时间:2018-02-27 23:55:32

标签: javascript node.js database mongodb aggregation-framework

我正在使用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

0 个答案:

没有答案