MongoDB에서 특정 필드로 검색하기
MongoDB에서 여러 필드에 걸쳐 조건을 지정해 문서를 검색하려면 $or 연산자를 사용할 수 있습니다. $or 연산자는 배열 안의 조건 중 하나라도 만족하는 모든 문서를 반환합니다.
먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.
> db.demo371.insertOne({"Name":"David","CountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f6982ae06a1609a00af2")
}
> db.demo371.insertOne({"Name":"John","CountryName":"UK"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f69e2ae06a1609a00af3")
}
> db.demo371.insertOne({"Name":"Bob","CountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f6a42ae06a1609a00af4")
}
> db.demo371.insertOne({"Name":"Mike","CountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f6ba2ae06a1609a00af5")
}컬렉션의 전체 문서 조회
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo371.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e57f6982ae06a1609a00af2"), "Name" : "David", "CountryName" : "US" }
{ "_id" : ObjectId("5e57f69e2ae06a1609a00af3"), "Name" : "John", "CountryName" : "UK" }
{ "_id" : ObjectId("5e57f6a42ae06a1609a00af4"), "Name" : "Bob", "CountryName" : "AUS" }
{ "_id" : ObjectId("5e57f6ba2ae06a1609a00af5"), "Name" : "Mike", "CountryName" : "US" }$or 연산자를 활용한 특정 필드 검색
이제 서로 다른 필드에 대한 조건을 동시에 적용하여 문서를 검색해 보겠습니다. 아래 쿼리는 Name이 'David'이거나 CountryName이 'UK'인 문서를 찾습니다.
> db.demo371.find({ $or: [ { Name: "David" }, { CountryName: "UK"} ] } )실행 결과, 두 조건 중 하나를 만족하는 문서만 반환됩니다.
{ "_id" : ObjectId("5e57f6982ae06a1609a00af2"), "Name" : "David", "CountryName" : "US" }
{ "_id" : ObjectId("5e57f69e2ae06a1609a00af3"), "Name" : "John", "CountryName" : "UK" }결과를 살펴보면 첫 번째 문서는 Name 조건('David')을, 두 번째 문서는 CountryName 조건('UK')을 각각 만족하기 때문에 두 문서 모두 결과에 포함되었습니다. 이처럼 $or 연산자를 사용하면 여러 필드에 대한 OR 조건 검색을 손쉽게 구현할 수 있습니다.