

일정 기준(예: heart_rate > 150)을 넘는 순간을 찾아서
발생 시각
해당 활동
발생 빈도를 분석한다
‼️ 오류 이유
- $group 스테이지의 문법 규칙 때문에 오류가 발생
- 아주 엄격한 약속이 하나, 바로 그룹의 기준이 되는 필드명을 반드시 _id라고 적어야 한다는 점
[수정 후]


활동별로 heart_rate, step_count, resp_rate, body_temp의 평균을 계산하고 비교한다. 어떤 활동이 가장 높은 생체 지표를 보이는지 분석

➡️ 평균 값들의 합을 구하고 그 값의 결과에 따라 분류하고 싶었다.‼️ 오류 이유
- add은: {'add': 1} → 개수 / {'필드'} → 보통 개별 문서의 값을 더할 때 사용
- ⭐️ 같은 $group 안에서 “별칭 필드” 재사용 불가
- MongoDB는 단계별로 데이터를 처리하기 때문에 $group이 완전히 끝나야 '평균 맥박'이라는 필드가 메모리에 생성됨.
- 따라서 이 값들을 더하는 작업은 반드시 다음 단계인 $addFields나 $project에서 진행해야 함.
[수정 후]
body_temp ≥ 38.0°C인 구간을 찾아
어떤 활동에서 많이 나타나는지
위험 패턴이 존재하는지 분석한다
‼️ 오류 이유
➡️ $count라는 필드는 없음 → 정렬 기준은 실제 필드명
[수정 후]



활동별로 step_count 합계와 평균을 구하고 가장 활동량이 많은 활동을 찾는다.

문제를 풀면서 두 개념을 명확하게 구분해서 설명하기 어렵다는 생각을 해서 추가로 공부해봤다.
➡️ $sum : $group에서 사용, 여러 개의 문서(데이터)를 하나로 뭉칠 때, 그 문서들의 특정 필드 값을 모두 수직으로 합칠 때 사용
➡️ $add : $project나 $addFields 스테이지에서 사용, 한 문서(데이터 한 줄) 안에서 여러 필드 값을 서로 더해 새로운 결과값을 만들 때 씁니다.
| 구분 | $sum | $add |
|---|---|---|
| 주요 스테이지 | $group | $addFileds, $project |
| 데이터 방향 | 세로(여러 문서를 -> 한 결과) | 가로(한 문서 내 필드+필드) |
| 의미 | "다 모아서 합계 내기" | "이거랑 저거랑 더하기" |
is_tampered = 1 이 발생한 횟수를 파악하고 오류가 어떤 활동에서 많이 발생하는지 분석한다.
‼️ 오류 이유
➡️ 필터링 부재: is_tampered = 1인 경우만 보고 싶다면 $match를 먼저 사용하는 것이 정확합니다.
➡️ $sort 문법: 딕셔너리 형태인 {'필드명': -1}로 작성해야 합니다.
[수정 후]

[출력할 값 순서대로 입력한다고 생각하면 조금은 쉬워짐]
1. is_tampered = 1 이 발생한 횟수를 파악
2. 오류가 어떤 활동에서 많이 발생하는지 분석
시간(HOUR) 기준으로 데이터를 그룹화하여 시간대별 평균 heart_rate 시간대별 평균 body_temp 패턴을 분석한다.
