MongoDB根据时间总示例

  

需要对下面的集合根据LastUpdate按天分组累加TranslateFields值。

rs_test: SECONDARY>, db.new_result.find (),,,,   {," _id ": ObjectId (“57 fb0756e31f84a56ed41889”),“LastUpdate”,:, ISODate (2016 - 09 - 02 t01:35:02.471z),,“TranslateFields”,:, 9,},,,,   {," _id ": ObjectId (“57 fb0756e31f84a56ed4188a”),“LastUpdate”,:, ISODate (2016 - 09 - 05 - t11:13:28.344z),,“TranslateFields”,:, 10,},,,,   {," _id ": ObjectId (“57 fb0756e31f84a56ed4188b”),“LastUpdate”,:, ISODate (2016 - 09 - 05 - t09:26:41.016z),,“TranslateFields”,:, 33,},,,,   {," _id ": ObjectId (“57 fb0756e31f84a56ed4188c”),“LastUpdate”,:, ISODate (2016 - 09 - 02 t13:34:50.114z),,“TranslateFields”,:, 12,},,,,   {," _id ": ObjectId (“57 fb0756e31f84a56ed4188d”),“LastUpdate”,:, ISODate (2016 - 08 - 26 t03:49:52.369z),,“TranslateFields”,:, 17,}


如果是在SQL服务器里,分组统计应该像这样写:

SELECT 转换(varchar LastUpdate, 112),和(TranslateFields)   ,得到dbo.new_result   GROUP 才能;BY 转换(varchar LastUpdate, 112)   ORDER 才能;BY  1;


那么在MongoDB里,有3种聚合方法:集团、聚合和mapReduce

//2.6版本总方法,,,   db.new_result.aggregate (,,,,   ,,,,,{,,,   ,,,,,,,group 美元;:,{,,,   ,,,,,,,,,,_id :,{,:{$年:大敌;“LastUpdate美元”,},,月:,{,$月:“LastUpdate美元”,},,:,{,$ dayOfMonth:“LastUpdate美元”,},},,,,,   ,,,,,,,,,,totalTime:,{,金额:美元“TranslateFields美元”,},,,,   ,,,,,,,},,,,   ,,,,,},,,,,   ,,,,,{,,,   ,,,,,,,sort 美元;:,{,,,   ,,,,,,,,,,“_id.year”:, 1,“_id.month”:, 1,“_id.day”:, 1,,,,   ,,,,,,,},,,,   ,,,,,},,,,   )

,

,

//3.0版本总方法,,,   db.new_result.aggregate (,,,,   ,,,,,{,,,   ,,,,,,,group 美元;:,{,,,   ,,,,,,,,,,yearMonthDay:, {, $ dateToString:{,格式:“Y % - % - % d”,,日期:,“LastUpdate美元”,},},,,,,   ,,,,,,,,,,totalTime:,{,金额:美元“TranslateFields美元”,},,,,   ,,,,,,,},,,,   ,,,,,},,,,,   ,,,,,{,,,   ,,,,,,,sort 美元;:,{,,,   ,,,,,,,,,,“yearMonthDay”:, 1,,,,   ,,,,,,,},,,,   ,,,,,},,,,   )

,

//集团方法,,,   db.new_result.group ({,,,   ,keyf :函数(doc) {,,,   var 才能;date =, new 日期(doc.LastUpdate);,,,,   var 才能;dateKey =,”“+ date.getFullYear () +“-”+ (date.getMonth () + 1) +“-”+ date.getDate (),,,,,   return 才能{“天”:dateKey},,,,,   },,,,,,   ,initial :{“时间”:0},,,,,,   ,reduce :函数(医生,,上一页){,,,   ,,,,,,,prev.time  +=, doc.TranslateFields;,,,,   ,,,},,,,,,   ,finalize : function  Finalize (), {,,,   ,,,return ,,,,,   },,,,   },,,,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

MongoDB根据时间总示例