我有一个MongoDB集合,它created_at
存储在每个文档中.这些存储为MongoDB日期对象,例如
{ "_id" : "4cacda7eed607e095201df00", "created_at" : "Wed Oct 06 2010 21:22:23 GMT+0100 (BST)", text: "something" } { "_id" : "4cacdf31ed607e0952031b70", "created_at" : "Wed Oct 06 2010 21:23:42 GMT+0100 (BST)", text: "something" } ....
我想计算每分钟之间创建的项目数量,因此我可以将数据传递到Google Charts中以生成如下内容:
我如何使用map reduce函数执行此操作,还是有一个奇特的MongoDB聚合函数,我可以使用它?
Map函数应该发出一个时间戳对象,调整到分钟,计数为1. reduce函数应该总和所有计数:
map = function() { var created_at_minute = new Date(this.created_at.getFullYear(), this.created_at.getMonth(), this.created_at.getDate(), this.created_at.getHours(), this.created_at.getMinutes()); emit(created_at_minute, {count: 1}); } reduce = function(key, values) { var total = 0; for(var i = 0; i < values.length; i++) { total += values[i].count; } return {count: total}; }