MongoDB MapReduce 实战<2>

  • 数据库里几百万的数据,处理起来可能会慢,于是,便简单建立了一张小一点的结构类似的表,测试数据
    /* 0 */
    {
      "_id" : ObjectId("54fe73e36e26d21dc4391bdb"),
      "CREATE_DATE" : ISODate("2014-07-26T13:57:18Z"),
      "RFID_NO" : "010101000120140322000173"
    }
    
    /* 1 */
    {
      "_id" : ObjectId("54fe74076e26d21dc4391bdc"),
      "CREATE_DATE" : ISODate("2014-07-24T11:57:18Z"),
      "RFID_NO" : "010101000120140322000173"
    }
    
    /* 2 */
    {
      "_id" : ObjectId("54fe74136e26d21dc4391bdd"),
      "CREATE_DATE" : ISODate("2014-07-27T09:27:18Z"),
      "RFID_NO" : "010101000120140322000173"
    }
    
    /* 3 */
    {
      "_id" : ObjectId("54fe742a6e26d21dc4391bde"),
      "CREATE_DATE" : ISODate("2014-07-26T13:57:18Z"),
      "RFID_NO" : "010101000120140322000883"
    }
    
  • 需要注意的是,时间类型的加入语句为:
     db.test.save({RFID_NO:'1',CREATE_DATE:new Date('6/26/2014 13:57:18')});
  • 编写Map
    function Map() {
    	// 取出日志记录中rfid相同的时间记录
    	emit(
    		this.RFID_NO,
    		this.CREATE_DATE
    	); 
    }
  • 编写Reduce
    function Reduce(key, values) {
    	// 将相同rfid的回收时间拼接到一调记录中
    	var ret = {rfid:key, times:[{}]};
    	for(var i = 0;i < values.length;i++){
    		ret.times[i] = values[i];
    	}
    	return ret;
    }
  • 配置In & Out
MongoDB MapReduce 实战<2>_第1张图片
  • 运行,得出结果:
MongoDB MapReduce 实战<2>_第2张图片

你可能感兴趣的:(mapreduce,mongodb)