Retrieve Distinct Values
개요
컬렉션 전체에서 지정된 필드에 대한 모든 고유 값을 검색하려면 distinct()
메서드를 사용합니다.
샘플 문서
이 가이드의 예제를 따라 하려면 다음 코드 스니펫을 사용하여 레스토랑을 설명하는 문서를 myDB.restaurants
컬렉션에 삽입하세요.
const myDB = client.db("myDB"); const myColl = myDB.collection("restaurants"); await myColl.insertMany([ { "_id": 1, "restaurant": "White Bear", "borough": "Queens", "cuisine": "Chinese" }, { "_id": 2, "restaurant": "Via Carota", "borough": "Manhattan", "cuisine": "Italian" }, { "_id": 3, "restaurant": "Borgatti's", "borough": "Bronx", "cuisine": "Italian" }, { "_id": 4, "restaurant": "Tanoreen", "borough": "Brooklyn", "cuisine": "Middle Eastern" }, { "_id": 5, "restaurant": "Äpfel", "borough": "Queens", "cuisine": "German" }, { "_id": 6, "restaurant": "Samba Kitchen", "borough": "Manhattan", "cuisine": "Brazilian" }, ]);
참고
쿼리 작업은 일치하는 문서가 포함된 커서 에 대한 참조를 반환할 수 있습니다. 커서 에 저장된 데이터를 검사하는 방법을 학습 보려면 커서 기본 사항 페이지를 참조하세요.
별개
distinct()
메서드에서는 문서 필드를 매개 변수로 사용해야 합니다. 다음과 같은 선택적 매개변수를 지정하여 메서드 출력을 조정할 수 있습니다.
결과를 구체화하는
query
매개변수데이터 정렬 규칙을 설정하는
options
매개변수
문서 필드 매개변수
문서 필드의 이름을 전달하여 필드의 고유 값 목록을 반환합니다.
예시
"Queens
" 및 "Manhattan
" 자치구 값은 샘플 문서에 각각 두 번 이상 표시됩니다. 그러나 다음 예제에서는 borough
필드의 고유 값을 조회합니다.
// specify "borough" as the field to return values for const cursor = myColl.distinct("borough"); for await (const doc of cursor) { console.dir(doc); }
이 코드는 다음과 같은 borough
값을 출력합니다.
[ "Bronx", "Brooklyn", "Manhattan", "Queens" ]
쿼리 매개변수
쿼리 매개변수를 지정하여 쿼리와 일치하는 문서에 대해 고유한 값을 반환할 수 있습니다.
쿼리 필터 구성에 대한 자세한 내용은 쿼리 지정을 참조하세요.
예시
다음 예제에서는 cuisine
필드의 고유 값을 출력하지만 "Brooklyn
"의 레스토랑은 제외합니다.
// exclude Brooklyn restaurants from the output const query = { borough: { $ne: "Brooklyn" }}; // find the filtered distinct values of "cuisine" const cursor = myColl.distinct("cuisine", query); for await (const doc of cursor) { console.dir(doc); }
이 경우 쿼리 필터는 "Brooklyn
"를 제외한 모든 자치구 값과 일치합니다. 이렇게 하면 distinct()
가 하나의 cuisine
값 "Middle Eastern
"을 출력하지 못합니다. 이 코드는 다음 값을 출력합니다.
[ "Brazilian", "Chinese", "German", "Italian" ]
옵션 매개변수
collation
필드를 options
매개 변수로 정의하여 distinct()
메서드에 대한 데이터 정렬을 지정할 수 있습니다. 이 필드에서는 문자열 순서 및 비교에 대한 리전 규칙을 설정할 수 있습니다.
데이터 정렬 적용에 대한 지침은 데이터 정렬 을 참조하세요.
참고
options
매개변수를 사용하는 경우 query
매개변수도 지정해야 합니다. 쿼리 필터를 사용하지 않으려면 쿼리를 {}
로 정의합니다.
예시
다음 예에서는 고유한 restaurant
값을 출력할 때 collation
필드를 사용하여 독일어 순서 규칙을 지정합니다.
// define an empty query document const query = {}; // specify German string ordering conventions const options = { collation: { locale: "de" }}; const cursor = myColl.distinct("restaurant", query, options); for await (const doc of cursor) { console.dir(doc); }
이 경우 독일어 문자열 순서 지정 규칙은 "A"로 시작하는 단어를 "B"로 시작하는 단어 앞에 배치합니다. 이 코드는 다음을 출력합니다:
[ "Äpfel", "Borgatti's", "Samba Kitchen", "Tanoreen", "Via Carota", "White Bear" ]
collation
필드를 지정하지 않으면 출력 순서는 기본 바이너리 데이터 정렬 규칙을 따릅니다. 이 규칙은 'A'로 시작하는 단어를 액센트가 없는 첫 글자가 있는 단어 뒤에 배치합니다:
[ "Borgatti's", "Samba Kitchen", "Tanoreen", "Via Carota", "White Bear", "Äpfel" ]
추가 정보
고유 값 검색의 실행 가능한 예제 는 필드의 고유 값 검색을 참조하세요.
API 문서
distinct()
메서드 및 해당 매개 변수에 대한 자세한 내용은 API 문서를 참조하세요.