정의
그룹의 문서에 걸쳐 평가된 고유한 표현식 값의 배열을 반환합니다. 배열의 요소 순서는 지정되지 않습니다.
$addToSet 이 단계에서 사용할 수 있습니다:
참고
명확화
이 페이지에서는 $addToSet을 축적자로 사용할 때에 대해 설명합니다. 축적자는 입력 문서 그룹 전체에 걸쳐 합계, 최댕값 또는 최소값과 같은 단일 집계 값을 반환합니다.
$addToSet를 다른 다음 문맥에서도 사용할 수 있습니다:
$addToSet (window function)는 특정 창의 문서에서 고유한 값의 배열을 반환하기 위해$setWindowFields단계에서 사용됩니다.$addToSet (update operator), 문서의 배열 필드에 고유한 요소를 추가합니다.
구문
{ $addToSet: <expression> }
표현식에 대한 자세한 내용은 표현식을 참조하세요 .
행동
표현식의 값이 배열인 경우, $addToSet는 전체 배열을 단일 요소로 추가합니다.
표현식의 값이 문서인 경우, 배열의 다른 문서가 추가할 문서와 정확히 일치하면 MongoDB는 해당 문서가 중복된 것으로 판단합니다. 특히 기존 문서에는 정확히 동일한 필드와 값이 정확히 동일한 순서로 있는 경우입니다.
예시
이 페이지의 예시는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우, 이 페이지의 예시를 실행하려면 데이터베이스를 제거하고 다시 생성해야 할 수 있습니다.
다음 작업은 영화를 디렉터별로 그룹하고 $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' ] } ]