$addFields and how it is similar to $project
{ $addFields: { <newField>: <expression>, ... } }
새 필드의 이름이 기존 필드 이름과 동일한 경우, $addFields 해당 필드의 기존 값을 지정된 표현식의 값으로 덮어쓴다.
geoNear Stage
{ $geoNear: { <geoNear options> } }
반환하는 문서 개수를 제한하거나 추가 검색 쿼리를 정의하는 등 다양한 옵션 설정이 가능하다.
aggregation 파이프 라인의 가장 첫번째 단계에서 정의해야 한다.
spherical: 계산 방식을 지정.
true인 경우, $nearSphere 방식으로 구형 지형을 계산하고,
false인 경우 $near 방식으로 계산하며,
구형 지형은 2dsphere 인덱스를, 평면 지형은 2d 인덱스를 사용한다.
limit: (옵션) 가져 올 문서의 최대 개수. (기본값은 100개)
num: (옵션) limit과 같은 기능이며, 둘 모두 지정되면 num의 값이 우선한다.
maxDistance: (옵션) 검색 최대 거리를 지정.
GeoJSON 포맷의 경우 미터 단위로 지정하고, 레거시 좌표점의 경우 radian으로 지정한다.
query: (옵션) 문서들을 필터링
distanceMultiplier: (옵션) 구한 거리 결과에 추가 연산을 실시.
얻은 결과를 추가로 변환해줄 때 유용하다.
uniqueDocs: (옵션) 2.6에서 deprecated된 옵션
near: 기준 좌표점.
2dsphere 인덱스라면 GeoJSON 형식으로, 2d 인덱스라면 레거시 좌표점 형식으로 입력한다.
distanceField: 거리를 출력 할 필드명.
includeLocs: (옵션) 거리 계산에 사용된 좌표점을 출력 할 필드.
한 문서가 여러 좌표점을 가지고 있는 경우 유용하게 사용 될 수 있다.
minDistance: (옵션) 검색 최소 거리.
설정되었다면 이 거리 이내의 문서들은 검색도 되지 않는다.
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: { size: <positive integer N> } }
참고 : https://learn.mongodb.com/learn/course/m121-the-mongodb-aggregation-framework