M121: The MongoDB Aggregation Framework 2

김하영·2023년 2월 14일
0

$addFields and how it is similar to $project

  • $addFields : 문서에 새 필드를 추가
{ $addFields: { <newField>: <expression>, ... } }

새 필드의 이름이 기존 필드 이름과 동일한 경우, $addFields 해당 필드의 기존 값을 지정된 표현식의 값으로 덮어쓴다.

geoNear Stage

  • $geoNear : 지정된 지점에서 가까운 것부터 먼 것 순으로 문서를 출력
{ $geoNear: { <geoNear options> } }

반환하는 문서 개수를 제한하거나 추가 검색 쿼리를 정의하는 등 다양한 옵션 설정이 가능하다.

aggregation 파이프 라인의 가장 첫번째 단계에서 정의해야 한다.

  • Options
  1. spherical: 계산 방식을 지정.
    true인 경우, $nearSphere 방식으로 구형 지형을 계산하고,
    false인 경우 $near 방식으로 계산하며,
    구형 지형은 2dsphere 인덱스를, 평면 지형은 2d 인덱스를 사용한다.

  2. limit: (옵션) 가져 올 문서의 최대 개수. (기본값은 100개)

  3. num: (옵션) limit과 같은 기능이며, 둘 모두 지정되면 num의 값이 우선한다.

  4. maxDistance: (옵션) 검색 최대 거리를 지정.
    GeoJSON 포맷의 경우 미터 단위로 지정하고, 레거시 좌표점의 경우 radian으로 지정한다.

  5. query: (옵션) 문서들을 필터링

  6. distanceMultiplier: (옵션) 구한 거리 결과에 추가 연산을 실시.
    얻은 결과를 추가로 변환해줄 때 유용하다.

  7. uniqueDocs: (옵션) 2.6에서 deprecated된 옵션

  8. near: 기준 좌표점.
    2dsphere 인덱스라면 GeoJSON 형식으로, 2d 인덱스라면 레거시 좌표점 형식으로 입력한다.

  9. distanceField: 거리를 출력 할 필드명.

  10. includeLocs: (옵션) 거리 계산에 사용된 좌표점을 출력 할 필드.
    한 문서가 여러 좌표점을 가지고 있는 경우 유용하게 사용 될 수 있다.

  11. minDistance: (옵션) 검색 최소 거리.
    설정되었다면 이 거리 이내의 문서들은 검색도 되지 않는다.

  12. key: (옵션) 인덱스가 설정된 필드를 지정.
    한 컬렉션의 여러 필드에 인덱스가 설정되어 있다면 반드시 지정해야 한다.

Cursor-like stages: Part 1

  • sort({field:-1}) = desc (내림차순)

  • cursor.allowDiskUse()

MongoDB의 Aggregate( ) 명령은 기본적으로 정렬을 위해서 100MB의 메모리까지 사용할 수 있다.
하지만 100MB 이상의 데이터를 정렬해야 하는 경우라면 Aggregate( ) 명령은 실패하게 된다.
이런 경우에는 allowDiskUse 옵션을 true로 설정해서 Aggregate( ) 처리가 디스크를 이용해서 정렬을 처리할 수 있게 한다.
allowDiskUse 옵션을 true로 설정하면 MongoDB 서버는 MongoDB의 데이터 디렉터리 하위에 "_tmp"라는 디렉터리를 만들어서 임시 가공용 데이터 파일을 저장한다.

$sample Stage

  • $sample : 입력 문서에서 지정된 수의 문서를 무작위로 선택.
{ $sample: { size: <positive integer N> } }
  • N : 무작위로 선택할 문서의 수

참고 : https://learn.mongodb.com/learn/course/m121-the-mongodb-aggregation-framework

profile
Back-end Developer

0개의 댓글