如何在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字段都相同?您好,这只是一个简单的描述,而不是真实的数据