public function findByDealIds($dealIds) { $query = $this->createQueryBuilder()->field('d_id')->in($dealIds)->map('function() { emit( this.' . $this->GROUP_BY . ', ' . str_replace('"', '', Stats::toJsonMap("this", true)) . '); }')->reduce("function(key, values) {\n var sum = " . Stats::toJsonMap() . ";\n for(var i in values) {" . Stats::toBaseSumString() . Stats::toDemographicsSumString() . Stats::toServicesSumString() . "}\n return sum;\n }"); $cursor = null; try { $cursor = $query->getQuery(array("out" => "last30days." . $this->GROUP_BY))->execute(); } catch (\Exception $e) { \sfContext::getInstance()->getLogger()->err("{DealStatsRepository} findByDealIds failed.\n" . $e->getMessage()); } return $cursor; }
private function rangeMapReduce($fromDay, $toDay, $groupBy = null) { return $this->createQueryBuilder()->field("day")->gte(new MongoDate(strtotime($fromDay)))->field("day")->lte(new MongoDate(strtotime($toDay)))->map('function() { emit( this.' . ($groupBy ? $groupBy : $this->GROUP_BY) . ', ' . str_replace('"', '', Stats::toJsonMap("this", true)) . '); }')->reduce("function(key, values) {\n var sum = " . Stats::toJsonMap() . ";\n for(var i in values) {" . Stats::toBaseSumString() . Stats::toDemographicsSumString() . Stats::toServicesSumString() . "}\n return sum;\n }"); }