2013-05-17 4 views
0

J'ai du mal à faire fonctionner l'agrégat Mongodb. Ca continue de me donner zéro. S'il vous plaît aider. Voici les codes écrits en php. Merci.MongoDB continue de me donner zéro

Ce que je veux faire est de résumer les valeurs des 2 champs, demandes et réponses, entre 2 dates particulières

try { 
     $mongodb = new MongoClient("mongodb://ad:[email protected]"); 

     $database = $mongodb->selectDB('backend'); 
     $collection = new MongoCollection($database, 'RequestSummary'); 

     $pipeline = array(
      array(
       '$group' => array(
        '_id' => array(
         'request' => array('$sum' => '$Requests'), 
         'response' => array('$sum' => '$Responses') 
        ) 
       ) 
      ), 
      array(
       '$match' => array(
        'RequestDate' => array(
         '$gte' => intval($_SESSION['range_from']), 
         '$lte' => intval($_SESSION['range_to']) 
        ) 
       ) 
      ) 
     ); 
     $collection->aggregate($pipeline); 
     var_dump($g); 
    } catch (MongoConnectionException $exc) { 
     echo $exc->getTraceAsString(); 
    } 

Répondre

0

Le _id de vos $group ne peuvent pas contenir des opérateurs d'agrégation comme $sum. Ces sommes doivent être définies en tant que champs au même niveau que _id. Si vous ne voulez pas le groupe sur un champ spécifique, vous pouvez utiliser NULL pour la _id comme ceci:

array(
    '$group' => array(
     '_id' => NULL, 
     'request' => array('$sum' => '$Requests'), 
     'response' => array('$sum' => '$Responses') 
    ) 
), 
Questions connexes