Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 여러 매개변수(조건)로 문서를 쿼리하는 방법

MongoDB에서 여러 매개변수(조건)를 동시에 만족하는 문서를 조회하려면 점(.) 표기법을 활용하면 됩니다. 특히 배열 안에 중첩된 필드나 하위 문서의 값을 조건으로 지정할 때 이 방법이 매우 유용합니다.

1. 테스트용 컬렉션 생성하기

먼저 예제로 사용할 컬렉션을 만들고 문서를 하나 삽입해 보겠습니다. 아래 예제에서는 고객 정보와 그 안에 중첩된 상세 정보(국가, 은행명, 잔액)를 함께 담은 구조를 사용합니다.

> db.multipleParametersDemo.insertOne(
...    {
...       "CustomerName" : "Larry",
...       "CustomerDetails" : [
...          {
...             "CustomerCountryName" : "US",
...             "CustomerBankName" : "HDFC",
...             "CustomerBalance" : 17363
...          }
...       ],
...       "Purchase" : 1456
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd10f9ce3526dbddbbfb60a")
}

insertOne() 메서드가 정상적으로 실행되면 위와 같이 acknowledged 값이 true로 반환되며, 새로 생성된 문서의 ObjectId도 함께 확인할 수 있습니다.

2. 저장된 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다. pretty() 메서드를 함께 사용하면 결과가 보기 좋게 정렬되어 출력됩니다.

> db.multipleParametersDemo.find().pretty();

위 쿼리는 다음과 같은 결과를 출력합니다.

{
   "_id" : ObjectId("5cd10f9ce3526dbddbbfb60a"),
   "CustomerName" : "Larry",
   "CustomerDetails" : [
      {
         "CustomerCountryName" : "US",
         "CustomerBankName" : "HDFC",
         "CustomerBalance" : 17363
      }
   ],
   "Purchase" : 1456
}

3. 여러 매개변수로 쿼리하기

이제 고객 이름(CustomerName)과 중첩된 필드인 국가(CustomerDetails.CustomerCountryName)라는 두 가지 조건을 동시에 적용해 문서를 조회해 보겠습니다.

> db.multipleParametersDemo.find({CustomerName: 'Larry', 'CustomerDetails.CustomerCountryName': 'US'}).count();

위 쿼리는 두 조건을 모두 만족하는 문서의 개수를 반환하며, 실행 결과는 다음과 같습니다.

1

핵심 정리

  • 쿼리 객체 안에 여러 조건을 쉼표(,)로 구분하여 나열하면 AND 조건으로 처리됩니다.
  • 중첩된 필드에 접근할 때는 반드시 따옴표로 감싼 점(.) 표기법(예: 'CustomerDetails.CustomerCountryName')을 사용해야 합니다.
  • count() 메서드를 함께 사용하면 조건에 맞는 문서의 개수를 간편하게 확인할 수 있습니다.

이처럼 점(.) 표기법과 복합 조건 쿼리를 조합하면 MongoDB에서 원하는 데이터를 더욱 정교하게 검색할 수 있습니다.