Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 4th, 2012  |  syntax: None  |  size: 1.57 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. PHP:
  2.  
  3.                 $from = strtotime("-120 day");
  4.                 $to = strtotime("-1 day");
  5.                 $this->dataAvailable = true;
  6.                 $db = \MongoConfiguration::instance()->getSlaveDataBase();
  7.                 $collection = $db->click;
  8.                 $keys = new \MongoCode('function(doc) { return {"month": doc.impression.ts.getMonth()+1, "year": doc.impression.ts.getFullYear(), "day": doc.impression.ts.getDate() }');
  9.                 $initial = array('apps' => array());
  10.                 $cond = array('impression.ts'=> array( '$gte'=>new \MongoDate($from), '$lt'=> new \MongoDate($to)));
  11.                 $reduce = "function(doc, prev) { if(prev.apps[doc.impression.aId] == null) { prev.apps[doc.impression.aId] = 0 } prev.apps[doc.impression.aId]++; }";
  12.  
  13.                 $this->clickdata = $collection->group(
  14.                         $keys,
  15.                         $initial,
  16.                         $reduce,
  17.                         $cond
  18.                         );
  19.  
  20.  
  21. vs
  22.  
  23. MongoShell:
  24.  
  25. db.click.group({
  26.    cond: { "impression.ts": {$gte: new Date(2010,5,23,17), $lte: new Date(2010,6,2,17) } },
  27.    keyf: function(doc) { return {"month": doc.impression.ts.getMonth()+1, "year":      
  28.                                           doc.impression.ts.getFullYear(), "day":
  29.                                           doc.impression.ts.getDate() } },  
  30.    initial: {apps: {} },
  31.    reduce: function(doc, prev) { if(prev.apps[doc.impression.aId] == null) {                
  32.       prev.apps[doc.impression.aId] = 0 } prev.apps[doc.impression.aId]++; }
  33. });