MongoDB/MongoDB 기본 CRUD

[MongoDB 기본 CRUD] 6. 비교 문법 사용하여 find()로 조건 조회하기

Fletcher 2024. 8. 13. 11:53

 

반갑습니다!

이번에는 find() 함수를 사용하여 특정 데이터 조건 조회시

필터로 지정할 수 있는 조건들 중에서

비교 문법에 관련된 내용에 대해서 알아보겠습니다 ^^

 

 

 

특정 데이터를 비교할 때는 다음과 같은 키워드를 사용할 수 있습니다

 

① $eq

특정 값에 매칭되는 조건을 의미합니다

ex) { name : { $eq : "Fletcher" } }

위 조건은 name 필드의 값이 Fletcher인 조건을 의미합니다

 

② $gt

특정 값보다 큰 조건(초과)을 의미합니다

ex) { age : { $gt : 50 } }

위 조건은 age 필드의 값이 50보다 큰 조건을 의미합니다

 

③ $gte

특정 값보다 크거나 같은 조건(이상)을 의미합니다

ex) { age : { $gte : 25 } }

위 조건은 age 필드의 값이 25보다 크거나 같은 조건을 의미합니다

 

④ $lt

특정 값보다 작은 조건(미만)을 의미합니다

ex) { height : { $lt : 12 } }

위 조건은 height 필드의 값이 12보다 작은 조건을 의미합니다

 

⑤ $lte

특정 값보다 작거나 같은 조건(이하)을 의미합니다

ex) { height : { $lte : 66 } }

위 조건은 height 필드의 값이 66보다 작거나 같은 조건을 의미합니다

 

⑥ $in

특정 값에 매칭되는 조건을 의미합니다

ex) { number : { $in : [ 52, 64, 85, 20 ] } }

위 조건은 number 필드의 값이 배열 [ 52, 64, 85, 20 ]에 포함되는 조건을 의미합니다

 

⑦ $nin

특정 값에 매칭되지 않는 조건을 의미합니다

ex) { number : { $in : [ 52, 64, 85, 20 ] } }

위 조건은 number 필드의 값이 배열 [ 52, 64, 85, 20 ]에 포함되지 않는 조건을 의미합니다

 

⑧ $ne

특정 값에 매칭되는 조건을 의미합니다

ex) { name : { $ne : "Brandon" } }

위 조건은 name 필드의 값이 "Brandon"이 아닌 조건을 의미합니다

 

 

 

 

 

예시를 몇 가지 들어보겠습니다 ^^

 

db.users.find({ age: { $gt: 25 } })

age 필드의 값이 25 초과인 데이터들을 조건 조회합니다

 

db.users.find({ age: { $lt: 25 } })

age 필드의 값이 25 미만인 데이터들을 조건 조회합니다

 

db.users.find({ age: { $gt: 25, $lte: 50 } })

age 필드의 값이 25를 초과하고 50 이하인 값들을 조건 조회합니다

 

 

위와 같이 특정 값을 비교하는 비교문법을 사용하면

보다 정교하게 데이터들을 조건 조회할 수 있습니다 ^^

 

 

 

 

 

연습문제를 한 번 풀어보겠습니다 ^^

 

1. age 필드의 값이 20보다 큰 도큐먼트의 name 필드만 출력하기

 

필터 조건으로 age 필드의 값이 20 이상이라는 의미로 $gte를 사용해주시면 되겠고,

그 다음 name 필드의 값을 1로 지정해서 출력할 컬럼으로 선택해주시면 되겠습니다 ^^

 

 

 

 

2. age가 50이고 address가 경기도인 도큐먼트의 name 필드만 출력하기

 

필터 조건을 사용할 때 특정 값에 매칭이 되는 조건에 대해서는

$eq를 사용해도 되고 바로 값으로 지정해도 됩니다

두 가지 모두 예시를 들기 위해서 위와 같이 조건을 지정했습니다 ^^

마찬가지로 name 필드만 지정해서 출력결과로 선택했습니다

 

 

 

 

3. age가 30보다 작은 도큐먼트의 name과 age 필드 출력하기

 

이번에는 $lt 키워드를 사용해서 30 미만의 조건을 지정했고

name과 age 필드를 지정해서 출력 결과로 선택했습니다 ^^