如何在mongodb中获取每个月的最大和最小数据

如何在mongodb中获取每个月的最大和最小数据,mongodb,Mongodb,我有这样的数据: { "_id" : "objid", //document id "date" : new Date("2015/01/01 00:00:00"), "value" : 14 }, ... { "_id" : "objid", "date" : new Date("2015/01/30 00:00:00"), "value" : 25 }, { "_id" : "objid", "date" : new Date("2015/02/0

我有这样的数据:

{
    "_id" : "objid", //document id
  "date" : new Date("2015/01/01 00:00:00"),
  "value" : 14
 },
...
 {
  "_id" : "objid",
  "date" : new Date("2015/01/30 00:00:00"),
  "value" : 25
 },
 {
  "_id" : "objid",
  "date" : new Date("2015/02/01 00:00:00"),
  "value" : 211
 },
 {
  "_id" : "objid",
  "date" : new Date("2015/02/15 00:00:00"),
  "value" : 200
 }
...
现在我想按月分组,以获得最大时间的数据和最小时间的数据。 例如:在“2015-01”月份,最长时间是2015/01/30,因此值=25是我想要得到的

如果使用聚合我只能得到时间,如何得到值

{
"$match": {
    "date": {
        "$gte":  new Date("2014-12-31T16:00:00.000Z"),
        "$lt": new Date("2015-12-31T16:00:00.000Z")
    }
  }
},
{
"$group": {
    "_id": {
        "month":{
            "$month" : "$date"
        }
    },
    "minDate":{
        "$min": "$date",
    },
    "maxDate":{
        "$max": "$date"
    }
  }
}

策略是对日期字段进行排序,分组时弹出最后一个值

{
"$match": {
    "date": {
        "$gte":  new Date("2014-12-31T16:00:00.000Z"),
        "$lt": new Date("2015-12-31T16:00:00.000Z")
    }
  }
},
{
"$sort": {
   "date": 1
  }
},
{
"$group": {
    "_id": {
        "month":{
            "$month" : "$date"
        }
    },
    "minDate":{
        "$min": "$date",
    },
    "maxDate":{
        "$max": "$date"
    },
    "value":{
        "$last": "$value"
    }
  }
}

当您根据日期对文档进行排序时,您可以分别使用
“min”
“max”
而不是
“first”
“last”

为什么所有文档的id字段都相同?您好,这只是一个简单的描述,而不是真实的数据