MongoDB에서 범위 조건으로 문서 조회하기
MongoDB에서는 $gt(초과)와 $lt(미만) 같은 비교 연산자를 함께 사용하면 하나의 쿼리로 여러 조건을 설정할 수 있습니다. 이를 활용하면 특정 범위에 속하는 값만 손쉽게 조회할 수 있습니다.
먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.
> db.demo59.insertOne({"Values":50});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e286286cfb11e5c34d89923")
}
> db.demo59.insertOne({"Values":10});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e286288cfb11e5c34d89924")
}
> db.demo59.insertOne({"Values":58});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e28628ccfb11e5c34d89925")
}
> db.demo59.insertOne({"Values":78});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e28628fcfb11e5c34d89926")
}find() 메서드로 전체 문서 확인하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo59.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e286286cfb11e5c34d89923"), "Values" : 50 }
{ "_id" : ObjectId("5e286288cfb11e5c34d89924"), "Values" : 10 }
{ "_id" : ObjectId("5e28628ccfb11e5c34d89925"), "Values" : 58 }
{ "_id" : ObjectId("5e28628fcfb11e5c34d89926"), "Values" : 78 }범위 조건을 적용한 쿼리 실행하기
이제 특정 범위 내의 값을 조회하는 쿼리를 살펴보겠습니다. 아래 예제에서는 Values 필드가 51보다 크고($gt) 70보다 작은($lt) 문서만 검색합니다.
> db.demo59.find({Values:{$gt:51, $lt:70}});실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e28628ccfb11e5c34d89925"), "Values" : 58 }전체 4개의 문서 중 Values 값이 50, 10, 78인 문서는 조건에 해당하지 않아 제외되고, 51 초과 70 미만 범위에 있는 값 58을 가진 문서만 반환된 것을 확인할 수 있습니다.
참고: 자주 사용하는 비교 연산자
- $gt: 지정한 값보다 큰 경우 (greater than)
- $gte: 지정한 값보다 크거나 같은 경우 (greater than or equal)
- $lt: 지정한 값보다 작은 경우 (less than)
- $lte: 지정한 값보다 작거나 같은 경우 (less than or equal)
이처럼 MongoDB의 비교 연산자를 조합하면 복잡한 범위 조건도 간단하게 처리할 수 있습니다.