Node-js,MongoDB - Groupby每天一小时(1-24)

时间:2017-11-18 16:32:46

标签: node.js mongodb mongodb-query aggregation-framework node-modules

我有一个集合,我在一家有时间戳的公司进行销售。  我需要获取数据,使其每小时使用group by,即凌晨1点,凌晨2点....

    {
        "_id" : 1,
        "billNo" : "000000001",
        "dateTime" : ISODate("2017-11-16T14:16:00.201Z"),
        "grossAmount" : 1000
    }
    {
        "_id" : 2,
        "billNo" : "000000002",
        "dateTime" : ISODate("2017-11-15T12:16:00.201Z"),
        "grossAmount" : 10000,

    }
    {
        "_id" : 3,
        "billNo" : "000000003",
        "dateTime" : ISODate("2017-11-14T11:16:00.201Z"),
        "grossAmount" : 10000,
    }

我需要像

这样的输出
     {_id:1am,count:0, grossAmount: 0}
     {_id:2am, count:1,grossAmount: 1000}
     {_id:3am,count:1, grossAmount: 2000}

即使计数为0,我也需要24小时。这里总金额是特定小时的总安装量之和。 是否可以在mongodb查询中执行,或者我需要在从mongodb获取后在我的节点中工作。

1 个答案:

答案 0 :(得分:0)

  

db.test.aggregate({ “$组”:{ “_ ID”:{ “$小时”: “$日期时间”},计数:{$总和: “$计数”},grossAmount:{$总和: “$ grossAmount”}}})

试试这个