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

MongoDB에서 필드(키)별 고유 값 개수 구하는 방법

MongoDB distinct 명령어로 고유 값 개수 세기

MongoDB에서 특정 필드(키)에 저장된 값들 중 중복을 제거한 고유 값의 개수를 확인하려면 distinct 명령어를 사용하면 됩니다. 개념을 쉽게 이해하기 위해 먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.

1. 컬렉션 생성 및 문서 삽입

아래 쿼리로 컬렉션을 만들고 문서를 삽입합니다.

> db.distinctCountValuesDemo.insertOne({"StudentFirstName":"John","StudentFavouriteSubject":["C","C++","Java","MySQL","C","C++"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a39f193b406bd3df60e07")
}
> db.distinctCountValuesDemo.insertOne({"StudentFirstName":"Larry","StudentFavouriteSubject":["MongoDB","SQL Server"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a3a1193b406bd3df60e08")
}

2. find() 메서드로 전체 문서 조회

find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.

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

실행 결과는 다음과 같습니다.

{
   "_id" : ObjectId("5c8a39f193b406bd3df60e07"),
   "StudentFirstName" : "John",
   "StudentFavouriteSubject" : [
      "C",
      "C++",
      "Java",
      "MySQL",
      "C",
      "C++"
   ]
}
{
   "_id" : ObjectId("5c8a3a1193b406bd3df60e08"),
   "StudentFirstName" : "Larry",
   "StudentFavouriteSubject" : [
      "MongoDB",
      "SQL Server"
   ]
}

3. distinct()로 고유 값 목록 조회

필드별 고유 값을 찾으려면 아래와 같이 distinct() 메서드에 필드 이름을 인자로 전달합니다. 배열 내 중복 값(C, C++)도 자동으로 제거됩니다.

> db.distinctCountValuesDemo.distinct('StudentFavouriteSubject');

실행 결과는 다음과 같습니다.

[ "C", "C++", "Java", "MySQL", "MongoDB", "SQL Server" ]

4. 고유 값의 개수(length) 구하기

반환된 배열에 .length 속성을 붙이면 고유 값의 총 개수를 바로 알 수 있습니다.

> db.distinctCountValuesDemo.distinct('StudentFavouriteSubject').length;

실행 결과는 다음과 같습니다.

6

이처럼 MongoDB에서는 distinct() 메서드 하나만으로 특정 필드의 고유 값 목록을 추출하고, length 속성으로 그 개수까지 손쉽게 계산할 수 있습니다.