MongoDB 집계 Aggregation-PipeLine

kyu725·2022년 8월 30일
0

집계, 통계를 처리할 때 Aggregation-PipeLine을 사용하면 된다

Aggregation-PipeLine

  • 파이프라인의 각 단계 출력이 다음 단계의 입력 데이터로 제공된다.
  • 파이프라인 배열 안에 Stage가 오브젝트 형식으로 배치된다.
  • Document는 파이프라인 배열의 Stage 순서대로 가공된다.
  • 각 Stage에서는 특별한 명령이 실행된다.

명령

$project - 출력 도큐먼트상에 배치할 필드를 지정한다.(projected)

$match - 처리될 도큐먼트를 선택하는 것. find()와 비슷한 역할을 수행한다.

$limit - 다음 단계에 전달될 도큐먼트의 수를 제한한다.

$skip - 지정된 수의 도큐먼트를 건너뛴다.

$unwind -배열을 확장하여 각 배열 항목에 대해 하나의 출력 도큐먼트를 생성한다.

  • 한 document의 필드에 여러값이 있는 경우, 필드 값들을 각 document로 만들 수있다.

$group -지정된 키로 도큐먼트를 그룹화한다.

  • $group의 _id로 분류할수 있다.
  • ex) id를 지정하지 않으면
  • ex) id를 지정하면
    const stats = await Tour.aggregate([
      {
        $match: {
          ratingsAverage: { $gte: 4.5 },
        },
      },
      {
        $group: {
          _id: null,
          avgRating: { $avg: '$ratingsAverage' },
          avgPrice: { $avg: '$price' },
          minPrice: { $min: '$price' },
          maxPrice: { $max: '$price' },
        },
      },
    ]);

$sort -도큐먼트를 정렬한다.

$geoNear - 지리 공간위치 근처의 도큐먼트를 선택한다.

$out - 파이프라인의 결과(출력)를 컬렉션에 쓴다.

$redact -특정 데이터에 대한 접근을 제어한다.

profile
김찬규

0개의 댓글