2017-03-08 51 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" 
      } 
     } 
    }])