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

MongoDB에서 특정 필드의 모든 값 목록 조회하는 방법

MongoDB에서 특정 필드에 저장된 모든 값을 한 번에 확인하고 싶다면 distinct() 메서드를 사용하면 됩니다. 이 메서드는 지정한 필드의 중복을 제거한 고유 값들을 배열 형태로 반환해 주기 때문에, 필드 전체의 값 분포를 빠르게 파악할 때 매우 유용합니다.

distinct() 기본 문법

db.yourCollectionName.distinct("yourFieldName");

예제 컬렉션 생성하기

문법을 제대로 이해하기 위해 먼저 샘플 데이터가 담긴 컬렉션을 만들어 보겠습니다. 아래 쿼리는 listAllValuesOfCeratinFieldsDemo라는 컬렉션에 문서를 하나씩 삽입합니다.

> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[10,20,30]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8fc89ed3c9d04998abf011")
}
> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[40,50,60]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8fc8abd3c9d04998abf012")
}
> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[10,20,30]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8fc8d7d3c9d04998abf013")
}
> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[40,50,70]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8fc8e2d3c9d04998abf014")
}

총 4개의 문서가 삽입되었으며, 각 문서는 ListOfValues라는 이름의 배열 필드를 가지고 있습니다.

저장된 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.

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

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{
    "_id" : ObjectId("5c8fc89ed3c9d04998abf011"),
    "ListOfValues" : [
        10,
        20,
        30
    ]
}
{
    "_id" : ObjectId("5c8fc8abd3c9d04998abf012"),
    "ListOfValues" : [
        40,
        50,
        60
    ]
}
{
    "_id" : ObjectId("5c8fc8d7d3c9d04998abf013"),
    "ListOfValues" : [
        10,
        20,
        30
    ]
}
{
    "_id" : ObjectId("5c8fc8e2d3c9d04998abf014"),
    "ListOfValues" : [
        40,
        50,
        70
    ]
}

distinct()로 특정 필드의 모든 값 조회하기

이제 distinct() 메서드를 사용해 ListOfValues 필드의 모든 값을 조회해 보겠습니다.

> db.listAllValuesOfCeratinFieldsDemo.distinct("ListOfValues");

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

[ 10, 20, 30, 40, 50, 60, 70 ]

출력 결과를 보면 알 수 있듯이, distinct()는 여러 문서의 배열 필드에 흩어져 있던 값들을 하나의 배열로 합쳐주고, 중복된 값(예: 두 번째 문서와 세 번째 문서에 공통으로 있는 10, 20, 30)은 자동으로 제거합니다. 덕분에 해당 필드에 어떤 고유한 값들이 존재하는지 한눈에 파악할 수 있습니다.