2016-06-20 2 views
1

잘 작동하는 mongoDB에서 날짜 비교를 사용하여 쿼리를 만들었습니다. PHP 배열에서 해당 쿼리를 변환하고 집계 메소드에서 실행할 때, 데이터.날짜 비교가 mongoDB 및 PHP를 사용하여 집계에서 작동하지 않습니다

되어 다음 MongoDB의 쿼리는 I 집계

$t = $collection->aggregate($pipeline); 

에서 $ 파이프 라인을 통과 할 때

$dateStart = new MongoDate(strtotime("2016-06-08T18:30:00.000+0000")); 

$pipeline = array(
    array('$match' => array(
     'EventTS' => array(
      '$gte' => $dateStart 
     ) 
    )) 
); 

언젠가 비어 기록을 응답하고 언젠가는 다음과 같은 오류 메시지로 응답 PHP로 변환

Array 
(
    [ok] => 0 
    [errmsg] => aggregation result exceeds maximum document size (16MB) 
    [code] => 16389 
) 

내 검색어가 옳다고 보지만 나는 무엇인지 식별 ​​할 수 없습니다. 정확한 문제

+0

친절 코드 다음 실행 해보세요 – Amit

답변

1
Your Query is perfect but as per mongodb define your document size more than 16 MB means your single row which is greater than 16 MB. 

    For resolve this issue you need to use $project in aggregation that migh be solve these issue. 
    Eg. 

    $pipeline = array(
     array('$match' => array(
      'EventTS' => array(
       '$gte' => $dateStart 
      ) 
     )), 
     array('$project' => array('<field>'=>' <1 or true>')) 
    ); 

OR you can use FINDALL 

find(array('EventTS' => array('$gte' => $dateStart))) 
1

위의 설명에 따르면 특정 날짜 시간보다 큰 날짜 시간을 가진 모든 문서를 가져와야합니다.

MongoDB의 찾기 작업을 사용하여 쉽게 수행 할 수 있습니다.

집계는 데이터 그룹에 대해 일부 계산을 수행해야하는 경우에 유용합니다.

모든 솔루션을 제안

$date = new MongoDate(strtotime("2016-06-08T18:30:00.000+0000")); 
$filter=array('EventTS'=>array('$gte'=>$date)); 
$data=$collection->find($filter); 
관련 문제