NoSQL 과제

김현희·2026년 4월 23일



1. $ 사용 오류

[오답]

‼️틀린 이유

: '$gte'같이 $를 사용해야 할 때는 무조건 .aggregate를 붙여야 하는 줄 알았다.
➡️ 결론) $gte 같은 비교 연산자는 find()에서도 아주 잘 작동함.

### 💡 의문점) find()에서 $gte를 사용할 수 있다면 왜 $match를 쓰는 걸까?
➡️ find(): 원하는 알갱이만 골라내는 것이 목적, 단일 작업에 최적화
➡️ $match : aggregate()는 여러 단계를 거치는 거대한 생산 라인으로 여러 단계의 가공 작업이 필요할 때, 그 시작점에서 데이터를 필터링하기 위해 $match라는 이름의 "공정"이 필요

[정답]


2. find({조건}, {보여줄 필드}) 오류

[오답]

‼️틀린 이유

➡️ find 함수는 항상 col.find({조건}, {보여줄 필드}) 순서로 작성
➡️ 조건이 여러 개라서 조건들, 보여줄 필드들끼리 묶어서 출력한게 오류 원인
❌ ({'glucose', 'hdl'},{'glucose':{'gte':125}, 'hdl':{'lt':40}})
🅾️ ({'glucose':{'gte':125}, 'hdl':{'lt':40}})

‼️추가

➡️ 화면에 출력할 필드 (1은 포함, 0은 제외)가 없기 때문에 조건에 해당되는 자료들은 모두 나옴.

[정답]


3. 괄호사용 오류


‼️틀린 이유

1️⃣ 괄호 사용 오류
(key: value) 형태는 존재하지 않기 때문에 딕셔너리 형태인 {"risk": -1}를 사용해야 함.
.
2️⃣ ❌col.aggregate( {단계1}, {단계2}, {단계3} ) 처럼 쉼표로 나열
🅾️ aggregate는 반드시 모든 단계를 하나의 리스트 [] 안에 담아서 전달해야 함
➡️ 비유: 공장 라인에 기계들을 하나씩 따로 던져주는 게 아니라, [기계1 -> 기계2 -> 기계3] 순서로 연결된 벨트를 통째로 넣는다고 생각!

.
3️⃣ $project 단계에서 어떤 필드를 보여줄지 선택할 때는 필드 이름 앞에 $를 붙이지 ❌
-> $는 "이 필드의 값을 꺼내 오라는 뜻"이라서, 선택할 때는 그냥 "ldl": 1이라고 써야 함.

[정답]

profile
AI 헬스케어 공부하는 간호사

0개의 댓글