MongoDB에서 고유한 값 반환

Tahseen Tauseef 2023년6월20일
  1. MongoDB의 distinct() 함수
  2. distinct() 함수를 사용하여 고유한 값 반환
  3. MongoDB의 필드에 대해 고유하거나 고유한 값 반환
  4. MongoDB의 포함된 필드에 대한 고유 값 반환
  5. 포함된 배열 필드에 대한 고유 값 반환
MongoDB에서 고유한 값 반환

이 기사에서는 MongoDB distinct() 메서드를 사용하여 고유한 값을 반환하는 방법을 다룹니다. 또한 배열 및 필드에서 고유한 값을 반환하는 방법도 설명합니다.

MongoDB에서 때때로 고유한 값을 렌더링하거나 반환하고 싶을 수 있으며 distinct() 메서드를 활용하여 이를 수행할 수 있습니다.

distinct() 메소드는 단일 콜렉션 또는 보기의 모든 콜렉션 또는 보기에서 주어진 필드에 대해 고유한 값의 배열을 생성하고 mongo 쉘에 지정된 필드에 대해 고유한 값을 리턴하는 데 도움을 줍니다.

MongoDB의 distinct() 함수

통사론:

db.collection.distinct(field, query, options)

MongoDB에서 함수에는 필드 및 쿼리 연산자라는 두 개의 필수 매개변수가 있어야 합니다. 필드 매개변수는 고유 값을 얻기 위해 distinct() 메소드를 원하는 필드입니다.

조회 매개변수는 고유 값을 가져와야 하는 문서를 지정합니다. 함수에 부수적 옵션 매개변수를 보낼 수 있습니다.

지정된 필드의 값이 배열인 경우 distinct()는 각 배열 요소를 별도의 값으로 취급합니다. 예를 들어 필드에 [10, [10], 10] 값이 있는 경우 distinct()10, [10]10을 별도의 값으로 취급합니다.

distinct() 함수를 사용하여 고유한 값 반환

distinct() 함수를 사용하여 MongoDB에서 고유한 값을 반환해 보겠습니다. 아래 컬렉션은 첫 번째 예제에 사용됩니다.

db.movies.find().pretty()
{
        "_id" : ObjectId("60322d3501cd70079c48cb65"),
        "title" : "Enchanted",
        "year" : 2006,
        "score" : 10,
        "rating" : "PG",
        "__v" : 0
}
{
        "_id" : ObjectId("60322d3501cd70079c48cb67"),
        "title" : "Final Destination II",
        "year" : 2015,
        "score" : 10,
        "rating" : "PG-13",
        "__v" : 0
}
{
        "_id" : ObjectId("6190189ef5c8903629012fe1"),
        "title" : "Fifty Shades of Grey",
        "year" : 2015,
        "score" : 10,
        "rating" : "NC-17",
        "__v" : 0
}

MongoDB의 필드에 대해 고유하거나 고유한 값 반환

위의 영화 컬렉션은 이 예에서 지정된 필드에 대해 고유한 값을 반환합니다. 등급 필드에서 고유한 값을 원한다고 가정해 보겠습니다.

질문:

db.movies.distinct( "rating" )
[ null, "", "NC-17", "PG", "PG-13"]

위의 쿼리를 사용한 후 distinct() 함수는 컬렉션에 대해 MongoDB에서 고유한 값을 반환하는 데 성공적으로 도움이 되었습니다.

MongoDB의 포함된 필드에 대한 고유 값 반환

이 예에서는 포함된 필드에 대해 고유한 값을 반환하는 것이 표시됩니다. 그러나 이전 예제에서 사용된 컬렉션에는 포함된 필드가 포함되지 않았습니다.

따라서 아래와 같이 새 컬렉션이 사용됩니다.

db.drones.find().pretty()
{
        "_id" : ObjectId("61673f46b34f185eb7b2bf0c"),
        "utility" : [
                "Natural Resource Exploration",
                "Remote sensing",
                "Real estate and construction",
                "Recreation",
                "Delivery"
        ],
        "onSale" : false,
        "name" : "Nimbari Gryphon Medeta 65",
        "price" : 77500,
        "weight" : "77 kilograms",
        "additionalDetails" : {
                "material" : "carbon fiber",
                "moreUses" : [
                        "Precision Agriculture",
                        "Land Inspection",
                        "Water Inspection",
                        "Cinematography"
                ]
        }
}
{
        "_id" : ObjectId("61673f46b34f185eb7b2bf0d"),
        "utility" : [
                "Natural Resource Exploration",
                "Remote sensing",
                "Real estate and construction",
                "Recreation",
                "Delivery"
        ],
        "onSale" : false,
        "name" : "X-Strimmer Eye",
        "price" : 23500,
        "weight" : "24 kilograms",
        "additionalDetails" : {
                "material" : "glass fiber",
                "moreUses" : [
                        "Precision Agriculture",
                        "Cinematography"
                ]
        }
}
{
        "_id" : ObjectId("61673f46b34f185eb7b2bf0e"),
        "utility" : [
                "Natural Resource Exploration",
                "Remote sensing",
                "Real estate and construction",
                "Recreation",
                "Delivery"
        ],
        "onSale" : false,
        "name" : "Khai Balemosh Shefqa TRX",
        "price" : 120500,
        "weight" : "80 kilograms",
        "additionalDetails" : {
                "material" : "aluminum",
                "moreUses" : [
                        "Precision Agriculture",
                        "Land Inspection"
                ]
        }
}

다음 쿼리는 위의 데이터베이스 컬렉션에서 포함된 모든 필드의 고유한 값을 반환할 수 있습니다.

질문:

db.drones.distinct( "additionalDetails.material" )
[ "aluminum", "carbon fiber", "glass fiber"]

포함된 배열 필드에 대한 고유 값 반환

distinct() 함수를 사용하면 위의 동일한 컬렉션을 사용하여 distinct() 함수를 사용하여 포함된 배열 필드에서 고유한 값을 반환할 수 있습니다.

질문:

db.drones.distinct( "additionalDetails.moreUses" )
["Cinematography","Land Inspection"]

이 MongoDB 자습서 기사에서는 컬렉션이 있는 고유한 함수에 대한 자세한 보기가 제공됩니다. 배열 및 필드 또는 포함된 필드에서 고유한 값을 반환하는 것도 코드 세그먼트로 설명됩니다.

관련 문장 - MongoDB Query