2016-08-21 17 views
5

Tôi cố gắng để sử dụng tổng hợp với với dự án, phù hợp và sắp xếp nhưng tôi đang nhận được một ngoại lệ (MongoResultException để được chính xác) nóiMột đường ống giai đoạn đặc tả đối tượng phải chứa chính xác một lĩnh vực với php Mongo tổng

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

Nó hoạt động tốt khi tôi không sử dụng sắp xếp và giới hạn nhưng tôi cần chúng cho việc này. Lý do tôi không sử dụng find() vì tôi đọc ở đâu đó rằng nó có thể tăng hiệu suất. Vui lòng giúp

$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; 

Trả lời

4

Có vẻ như vấn đề là nhiệm vụ sắp xếp $ của bạn. Bạn có

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

không thực sự cung cấp đặc điểm sân khấu '$ sort'. Không phải là:

$sort = array('$sort' => array('Field3' => -1, 'Field4'=>-1)); 
Các vấn đề liên quan