MongoDB에서 배열에 포함된 중복 값을 제거하고 고유한(distinct) 항목만 추출하려면 distinct() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 그 사용법을 단계별로 살펴보겠습니다.
1. 샘플 데이터 생성
먼저 중복된 값이 포함된 배열을 가진 문서를 삽입하여 컬렉션을 생성합니다.
> db.demo588.insertOne({"CountryName":["US","AUS","UK","US","UK","AUS"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e92bbd2fd2d90c177b5bccb")
}
2. 저장된 문서 확인
find() 메서드를 사용하면 컬렉션의 모든 문서를 조회할 수 있습니다.
> db.demo588.find().pretty();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5e92bbd2fd2d90c177b5bccb"),
"CountryName" : [
"US",
"AUS",
"UK",
"US",
"UK",
"AUS"
]
}
출력 결과를 보면 CountryName 배열 안에 "US", "UK", "AUS" 값이 각각 두 번씩 중복되어 저장되어 있는 것을 확인할 수 있습니다.
3. distinct()로 고유한 배열 항목 추출하기
다음은 배열에서 고유한 항목만 수집하는 쿼리입니다.
> db.demo588.distinct("CountryName");
실행 결과는 다음과 같습니다.
[ "AUS", "UK", "US" ]
이처럼 distinct() 메서드는 지정한 필드의 모든 값을 스캔한 뒤 중복을 제거하고 정렬된 형태의 고유한 값 목록을 반환합니다. 배열 필드에도 그대로 적용할 수 있기 때문에 태그, 카테고리 등 중복 없는 값 목록이 필요한 경우 매우 유용하게 활용할 수 있습니다.