정의
그룹 의 문서 전체에서 평가된 표현식 에 대한 고유 값의 배열 반환합니다. 배열 의 요소 순서는 지정되지 않습니다.
$addToSet 이 단계에서 사용할 수 있습니다:
참고
명확화
이 페이지에서는 축적자 사용되는 $addToSet 에 대해 설명합니다. 축적자는 입력 문서 그룹 에서 합계, 최대값, 최소값과 같은 단일 애그리게이션 값을 반환합니다.
다음과 같은 다른 컨텍스트에서도 $addToSet를 사용할 수 있습니다.
$addToSet (window function)는$setWindowFields단계에서 특정 창 문서에서 고유한 값의 배열 반환하는 데 사용됩니다.$addToSet (update operator)문서 의 배열 필드 에 고유한 요소를 추가합니다.
구문
{ $addToSet: <expression> }
표현식에 대한 자세한 내용은 표현식을 참조하세요 .
행동
표현식 의 값이 배열 인 경우 $addToSet는 전체 배열 단일 요소로 추가합니다.
표현식의 값이 문서인 경우, 배열의 다른 문서가 추가할 문서와 정확히 일치하면 MongoDB는 해당 문서가 중복된 것으로 판단합니다. 특히 기존 문서에는 정확히 동일한 필드와 값이 정확히 동일한 순서로 있는 경우입니다.
예시
이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
다음 작업은 영화를 감독별로 그룹화하고 $addToSet 축적자 사용하여 각 감독이 작업한 고유한 장르를 수집합니다. 가독성을 높이기 위해 파이프라인 결과를 알파벳 순서의 처음 5명의 감독으로 제한합니다.
db.movies.aggregate( [ { $unwind: "$directors" }, { $unwind: "$genres" }, { $group: { _id: "$directors", genres: { $addToSet: "$genres" } } }, { $sort: { _id: 1 } }, { $limit: 5 } ] )
이 파이프라인 다음 결과를 반환합니다.
[ { _id: 'A. Dean Bell', genres: [ 'Crime', 'Drama' ] }, { _id: 'A. Karunakaran', genres: [ 'Romance' ] }, { _id: 'A. Vanichkin', genres: [ 'Animation', 'Fantasy' ] }, { _id: 'A.J. Edwards', genres: [ 'Biography', 'Drama', 'History' ] }, { _id: 'A.R. Murugadoss', genres: [ 'Drama', 'Sci-Fi', 'Thriller', 'Action', 'Mystery' ] } ]