如何在mongodb查询中传递特定数据?

时间:2018-04-12 12:31:21

标签: mongodb mongoose mongodb-query

我有一个网站访问的集合,我需要做3个显示访问的图表。第一个图表必须显示每小时划分的选定日期,第二个图表显示每天划分的选定月份,第三个图表显示每月划分的选定年份。我有所有3个案例的查询,但我做了一个直接插入查询的临时日期。对于每种情况,我都需要能够从图表中选择一天,一个月或一年。我必须在我的TS代码中实现这些查询。

我有这样的数据(在集合中):

{
    "_id" : ObjectId("5ab111a1646e371568c8cfa1"),
    "date" : ISODate("2018-03-20T13:46:30.018Z"),
    "__v" : 0
}

现在我展示了我拥有的3个代码:

DAY

db.monitors.aggregate([  
  {"$match":{
    "date":{
        "$gte":ISODate("2018-03-22T00:00:00.000Z"), "$lt":ISODate("2018-03-23T00:00:00.000Z")}}
    },

  {"$group":{
    "_id":{
      "year":{"$year":"$date"},
      "month":{"$month":"$date"},
      "dayOfMonth":{"$dayOfMonth":"$date"},
      "hour":{"$hour":"$date"}
    },
    "count":{"$sum":1}
  }},

  {"$group":{
    "_id":{
      "year":"$_id.year",
        "month":"$_id.month",
      "dayOfMonth":"$_id.dayOfMonth"
    },
    "dailyCount":{"$sum":"$hourlyCount"},
    "hourlyData":{"$push":{"hour":"$_id.hour","count":"$count"}}
  }}
])

db.monitors.aggregate([  
  {"$match":{
    "date":{
        "$gte":ISODate("2018-02-01T00:00:00.000Z"), "$lt":ISODate("2018-03-01T00:00:00.000Z")}}
    },

  {"$group":{
    "_id":{
      "year":{"$year":"$date"},
      "month":{"$month":"$date"},
      "dayOfMonth":{"$dayOfMonth":"$date"}
    },
    "count":{"$sum":1}
  }},

  {"$group":{
    "_id":{
      "year":"$_id.year",
        "month":"$_id.month",
      "dayOfMonth":"$_id.dayOfMonth"
    },
    "monthlyCount":{"$sum":"$dailyCount"},
    "dailyData":{"$push":{"dayOfMonth":"$_id.dayOfMonth","count":"$count"}}
  }}
])

YEAR

db.monitors.aggregate([  
  {"$match":{
    "date":{
        "$gte":ISODate("2017-01-01T00:00:00.000Z"), "$lt":ISODate("2018-01-01T00:00:00.000Z")}}
    },

  {"$group":{
    "_id":{
      "year":{"$year":"$date"},
      "month":{"$month":"$date"},
    },
    "count":{"$sum":1}
  }},

  {"$group":{
    "_id":{
      "year":"$_id.year",
        "month":"$_id.month",
    },
    "yearlyCount":{"$sum":"$monthlyCount"},
    "monthlyData":{"$push":{"month":"$_id.month","count":"$count"}}
  }}
])

0 个答案:

没有答案