MongoDB 비교 쿼리 연산자
MongoDB 비교 쿼리 연산자 (Comparison Query Operators)
도큐먼트의 필드 값을 특정한 기준 값과 비교해 가져오고 싶을 때 쓰는 연산자들이 있어요. 컬렉션에서 숫자나 날짜, 문자열의 크고 작음을 조건으로 걸 때 대부분 이 비교 연산자가 들어가요. 비교 연산자는 주로 find() 같은 조회 쿼리의 조건문 안에서 기준 값과 함께 사용합니다.
어떤 연산자가 있나요
비교 쿼리 연산자는 한 필드의 값과 지정한 값을 서로 비교해서 일치 여부를 판단해요. 표준 SQL에서 =, >, < 같은 비교가 MongoDB에서는 $로 시작하는 연산자 이름으로 바뀐다고 보면 돼요.
$eq— 값이 지정한 값과 같은 도큐먼트를 찾아요.$gt— 값이 지정한 값보다 큰 도큐먼트를 찾아요.$gte— 값이 지정한 값보다 크거나 같은 도큐먼트를 찾아요.$lt— 값이 지정한 값보다 작은 도큐먼트를 찾아요.$lte— 값이 지정한 값보다 작거나 같은 도큐먼트를 찾아요.$ne— 값이 지정한 값과 같지 않은 모든 도큐먼트를 찾아요.$nin— 값이 주어진 목록의 어떤 값과도 같지 않은 도큐먼트를 찾아요.
비교 연산자 쓰는 법
비교 연산자는 필드 이름 뒤에 $gt 같은 연산자를 붙이고, 그 값으로 비교할 기준 값을 넣는 식으로 써요. 예를 들어 재고 수량 qty가 20보다 큰 상품만 조회하고 싶다면 이렇게 조건을 만들어요.
db.inventory.find( { qty: { $gt: 20 } } )
날짜나 문자열도 같은 방식으로 대소 비교를 할 수 있어요. $ne는 해당 필드가 아예 없는 도큐먼트도 눈에 띄게 취급하는 점이 있는데, 필드가 존재하지 않는 문서는 $ne 조건에 걸리지 않으니 "값이 다르다"와 "값이 없다"를 구분해서 써야 해요.