정의
각 그룹에 대한 입력 문서를 결합하여 생성된 문서를 반환합니다.
$mergeObjects 축적자는 다음 단계에서 사용할 수 있습니다.
참고
명확화
이 페이지에서는 $mergeObjects을 축적자로 사용할 때에 대해 설명합니다. 축적자는 입력 문서 그룹 전체에서 집계된 값을 반환합니다.
또한 문서 배열을 단일 문서로 병합하는 $mergeObjects (expression)를 사용할 수 있습니다.
구문
{ $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 } }] )각 영화에는 두 개의 문서가 있습니다:
filmCritic에서
rating및votes필드를 가진 하나.viewerVault에서
tomatometer및audienceScore필드를 포함하는 하나.
두 개의 소스 문서의 필드 이름이 서로 다르기 때문에, $mergeObjects은 이들을 결합하여 네 개의 필드 모두를 포함하는 완전한 프로필로 만들 수 있습니다.
다음 파이프라인은 $group 단계에서 $mergeObjects을(를) 사용하여 각 소스의 검토 데이터를 결합하여 각 영화에 대한 단일 문서로 만듭합니다.
db.movieReviews.aggregate( [ { $group: { _id: "$title", allRatings: { $mergeObjects: "$data" } } }, { $sort: { _id: 1 } }] )이전 파이프라인의 경우: