2015-01-13 2 views

답변

3

실제로 이것과 직접적인 상관 관계는 없지만 가장 가까운 것은 Collection의 aggregate() 메소드를 구현하는 것입니다. 당신이 볼 수 있듯이, 누락 된 부분은 MongoDB를 집계 쿼리에서 직접 대체가 집계 파이프 라인 등의 임의의 숫자를 생성하지 거기에 당신의 RAND() 기능은

$top_orders = Orders::aggregate(array(
    array('$group' => array( 
     '_id' => '$pro_id', 
     'count' => array('$sum' => 1) 
    )), 
    array('$match' => array( 
     'count' => array('$gt' => 100) 
    )), 
    array('$sort' => array('count' => -1)), 
    array('$limit' => 5) 
)); 

있다.

그러나 여기 예제에서 수행 한 작업을 수행 할 수 있습니다. 예를 들어, "카운트"합계와 같이 현재 표시된 항목을 기준으로 정렬 할 수 있습니다. 출력시 특정 이름이 필요하다고 생각하면 $project을 사용하여 필드를 변경할 수도 있습니다. $group 파이프 라인은 _id과 같은 "키"를 필요로하기 때문에 일반적으로 성능면에서 고려해야합니다.

따라서 기본 단계는 $group, $match, $sort 및 입니다. 이것들은 모두 집계 파이프 라인 단계이며, DSL과 같은 SQL이 find()에 구현 된 것으로 잘 변환되지 않으므로 MongoDB가이를 수행하는 일반적인 방법입니다.