MongoDB에서 하나 이상의 조건을 동시에 평가해야 할 때는 find() 메서드와 함께 $or 연산자를 사용하면 됩니다. $or 연산자는 배열 형태로 전달된 여러 조건 중 하나라도 만족하는 문서를 모두 반환합니다.
1. 샘플 컬렉션 생성
먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.
> db.demo174.insertOne({"StudentName":"Chris","CountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e383c709e4f06af551997e5")
}
> db.demo174.insertOne({"StudentName":"David","CountryName":"UK"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e383c779e4f06af551997e6")
}
> db.demo174.insertOne({"StudentName":"Bob","CountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e383c7e9e4f06af551997e7")
}2. 컬렉션의 전체 문서 확인
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.
> db.demo174.find();
위 쿼리는 다음과 같은 결과를 출력합니다.
{ "_id" : ObjectId("5e383c709e4f06af551997e5"), "StudentName" : "Chris", "CountryName" : "US" }
{ "_id" : ObjectId("5e383c779e4f06af551997e6"), "StudentName" : "David", "CountryName" : "UK" }
{ "_id" : ObjectId("5e383c7e9e4f06af551997e7"), "StudentName" : "Bob", "CountryName" : "AUS" }3. $or 연산자로 여러 값 평가하기
다음은 $or 연산자를 활용해 두 개 이상의 조건을 평가하는 쿼리입니다. 여기서는 학생 이름이 'David'이거나 국가가 'US'인 문서를 조회합니다.
> db.demo174.find({$or:[{"StudentName":"David"},{"CountryName":"US"}]});실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e383c709e4f06af551997e5"), "StudentName" : "Chris", "CountryName" : "US" }
{ "_id" : ObjectId("5e383c779e4f06af551997e6"), "StudentName" : "David", "CountryName" : "UK" }결과 분석
출력 결과를 보면 두 개의 문서가 반환되었습니다. 첫 번째 문서는 국가명이 'US' 조건을 만족했고, 두 번째 문서는 학생 이름이 'David' 조건을 만족했기 때문입니다. 이처럼 $or 연산자는 주어진 조건 중 하나라도 참인 모든 문서를 반환하므로, 복수의 검색 기준을 유연하게 처리할 수 있습니다.