2016-08-21 32 views
5

Próbuję użyć kruszywa z projektem, dobierać i porządek, ale otrzymuję wyjątek (MongoResultException być dokładne) mówiącRurociąg specyfikacja etap obiekt musi zawierać dokładnie jedno pole z php Mongo łącznej

exception: A pipeline stage specification object must contain exactly one field.

Działa dobrze, gdy nie używam sortowania i limitu, ale potrzebuję ich do tego. Powód, dla którego nie używam find() ponieważ czytam gdzieś, że może on zwiększyć wydajność. Proszę o pomoc

$query = array(.... //An actual query that works with find() 
$collection = $this->db->CollectionName; 
      $project = array(
       '$project' => array(
        'Field1' => 1, 
        'Field2'=> 1, 
        'Field3'=> 1, 
        'Field4'  => 1 
       ) 
      ); 
      $match = array('$match'=>$query); 
      $sort = array('Field3' => -1, 'Field4'=>-1); 
      $limit = array('$limit' => 100); 


      $result = $collection->aggregate(array($match,$project,$sort,$limit)); 
      return $result; 

Odpowiedz

4

Wygląda na to, że problem jest twoje zadanie $ sort. Masz

który nie podaje specyfikacji etapu "$ sort". Nie powinno być:

$sort = array('$sort' => array('Field3' => -1, 'Field4'=>-1));