실제로 이것과 직접적인 상관 관계는 없지만 가장 가까운 것은 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가이를 수행하는 일반적인 방법입니다.