정의
각 그룹에 대한 입력 문서를 결합하여 생성된 문서를 반환합니다.
$mergeObjects 축적자 다음 단계에서 사용할 수 있습니다.
참고
명확화
이 페이지에서는 축적자 사용되는 $mergeObjects 에 대해 설명합니다. 축적자는 입력 문서 그룹 에서 애그리게이션된 값을 반환합니다.
다음과 같은 다른 컨텍스트에서도 $mergeObjects를 사용할 수 있습니다.
$mergeObjects (expression)은(는) 문서 배열 단일 문서 로 병합합니다.$mergeObjects (window function)는$setWindowFields단계에서 창 문서에서 병합된 문서 반환하는 데 사용됩니다.
구문
{ $mergeObjects: <expression> }
<expression> 은 문서 로 평가되는 모든 유효한 표현식 일 수 있습니다.
행동
$mergeObjects null 입력 값을 무시합니다. 모든 입력 값이 null인 경우, $mergeObjects는 빈 문서 { }를 반환합니다.
$mergeObjects 문서를 병합할 때 필드 값을 덮어씁니다. 여러 입력 문서에 동일한 필드 이름이 포함된 경우 출력에는 충돌하는 필드 포함된 마지막 입력 문서 의 값이 포함됩니다.
예시
movieReviews collection을 만듭니다.
db.movieReviews.insertMany( [ { title: "Galactic Odyssey", source: "filmCritic", data: { rating: 8.1, votes: 1482903 } }, { title: "Galactic Odyssey", source: "viewerVault", data: { tomatometer: 79, audienceScore: 85 } }, { title: "Neon Horizon", source: "filmCritic", data: { rating: 7.4, votes: 983201 } }, { title: "Neon Horizon", source: "viewerVault", data: { tomatometer: 68, audienceScore: 74 } }, { title: "The Last Protocol", source: "filmCritic", data: { rating: 8.7, votes: 2104567 } }, { title: "The Last Protocol", source: "viewerVault", data: { tomatometer: 91, audienceScore: 88 } } ] )
각 영화에는 두 개의 문서가 있습니다.
rating및votes필드가 있는 FilmCritic에서 가져온 것입니다.tomatometer및audienceScore필드가 있는 뷰어 볼트에서 하나입니다.
두 소스 문서의 필드 이름이 다르기 때문에 $mergeObjects는 이를 결합하여 네 개의 필드를 모두 포함하는 완전한 프로필로 만들 수 있습니다.
다음 파이프라인 $group 단계에서 $mergeObjects를 사용하여 각 소스의 검토 데이터를 각 영화의 단일 문서 로 결합합니다.
db.movieReviews.aggregate( [ { $group: { _id: "$title", allRatings: { $mergeObjects: "$data" } } }, { $sort: { _id: 1 } } ] )
이전 파이프라인의 경우: