MongoDB $or 연산자란?
MongoDB의 $or 연산자는 배열 안에 지정된 여러 표현식 중 하나라도 참(true)이면 해당 문서를 반환하는 논리 연산자입니다. 예를 들어, 특정 필드가 값 A 또는 값 B와 일치하는 문서를 한 번의 쿼리로 조회할 수 있습니다.
$or 연산자 기본 문법
$or 연산자의 기본적인 사용 문법은 다음과 같습니다.
db.yourCollectionName.find({ $or: [{ "yourFieldName": yourValue1 }, { "yourFieldName": yourValue2 }] }).pretty();예제용 컬렉션 생성하기
먼저 실습에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.
> db.orOperatorDemo.insertOne({"StudentNames":["John","Carol","Sam"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd6b80a6d78f205348bc61b")
}
> db.orOperatorDemo.insertOne({"StudentNames":["Robert","Chris","David"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd6b8266d78f205348bc61c")
}
> db.orOperatorDemo.insertOne({"StudentNames":["John"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd6b8346d78f205348bc61d")
}find() 메서드로 전체 문서 조회하기
삽입된 모든 문서를 확인하려면 find() 메서드를 사용합니다.
> db.orOperatorDemo.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5cd6b80a6d78f205348bc61b"),
"StudentNames" : [
"John",
"Carol",
"Sam"
]
}
{
"_id" : ObjectId("5cd6b8266d78f205348bc61c"),
"StudentNames" : [
"Robert",
"Chris",
"David"
]
}
{
"_id" : ObjectId("5cd6b8346d78f205348bc61d"),
"StudentNames" : [
"John"
]
}$or 연산자로 조건부 쿼리 실행하기
이제 $or 연산자를 활용하여 StudentNames 필드가 "Carol" 또는 "John"을 포함하는 문서만 조회해 보겠습니다.
> db.orOperatorDemo.find({ $or: [{ "StudentNames": "Carol" }, { "StudentNames": "John"}] }).pretty();위 쿼리의 실행 결과는 다음과 같습니다.
{
"_id" : ObjectId("5cd6b80a6d78f205348bc61b"),
"StudentNames" : [
"John",
"Carol",
"Sam"
]
}
{
"_id" : ObjectId("5cd6b8346d78f205348bc61d"),
"StudentNames" : [
"John"
]
}결과 분석
실행 결과를 보면 두 개의 문서만 반환되었습니다. 그 이유는 다음과 같습니다.
- 첫 번째 문서에는 "John"과 "Carol"이 모두 포함되어 있어 조건을 충족합니다.
- 두 번째 문서(Robert, Chris, David)는 두 조건 중 어느 것도 일치하지 않으므로 제외됩니다.
- 세 번째 문서에는 "John"이 포함되어 있어 조건을 충족합니다.
이처럼 $or 연산자를 사용하면 여러 조건 중 하나라도 만족하는 문서를 손쉽게 조회할 수 있으며, 실무에서 복잡한 검색 조건을 처리할 때 매우 유용하게 활용됩니다.