2017-03-08 54 views
0

我有一组数据,看起来有点像这样:MongoDB的查询:如何添加所有的日期上发生的最大值

{ "_id": 1, "value": { "startTime": ISODate("2017-02-15T11:30:00Z"), "reading": 100 } } 
{ "_id": 2, "value": { "startTime": ISODate("2017-02-14T11:30:00Z"), "reading": 50 } } 
{ "_id": 3, "value": { "startTime": ISODate("2017-02-13T11:30:00Z"), "reading": 100 } } 

我希望在最大读数时发现所有的日期要创建一个对象,应该是这样的:

"Maximum" : { "max" : 100, "when" : [ ISODate("2017-02-15T11:30:00Z"), ISODate("2017-02-13T11:30:00Z") ]} 

小组发言中,我至今是:

"$group": { 
    "_id": null, 
    "Maximum": { "$max": { "max": "$value.reading", "when": "$value.startTime" } } 
} 

这仅记录第一次看到最大读数。

当我们有最大读数时,如何使“when”包含所有日期的数组?

我在想这将涉及$推,但我不能得到它的工作。

回答

0

蒙戈外壳命令,

db.document.aggregate([{ 
     $group: { 
      _id: "$value.reading", 
      when: { 
       $push: "$value.startTime" 
      } 
     } 
    }, { 
     $sort: { 
      "_id": -1 
     } 
    }, { 
     $limit: 1 
    }, { 
     $project: { 
      _id: 0, 
      Maximum: { 
       max: "$_id", 
       when: "$when" 
      } 
     } 
    }])