정의
문서 배열 단일 문서 로 병합합니다.
참고
명확화
이 페이지에서는 $mergeObjects가 문서 배열 병합하는 표현식 으로 사용되는 경우에 대해 설명합니다.
다음과 같은 다른 컨텍스트에서도 $mergeObjects를 사용할 수 있습니다.
$mergeObjects (accumulator)는 입력 문서 그룹 에서 병합된 문서 반환합니다.$mergeObjects (window function)는$setWindowFields단계에서 창 문서에서 병합된 문서 반환하는 데 사용됩니다.
구문
표현식 으로 사용되는 경우 $mergeObjects의 구문은 다음과 같습니다.
{ $mergeObjects: <expression> }
<expression> 피연산자는 다음 중 하나일 수 있습니다.
병합할 문서 배열 로 평가되는 단일 표현식 입니다. 예시 들어
$blogPosts은 문서 필드blogPosts에 문서 배열 이 포함되어 있습니다.각 표현식이 문서 로 평가되는 표현식의 배열 . 예시 들어,
[ "$doc1", "$doc2", "$doc3" ]은 각 문서 필드 에 단일 문서 포함되어 있습니다.
행동
$mergeObjects null 입력 값을 무시합니다. 모든 입력 값이 null인 경우, $mergeObjects는 빈 문서 { }를 반환합니다.
$mergeObjects 문서를 병합할 때 필드 값을 덮어씁니다. 여러 입력 문서에 동일한 필드 이름이 포함된 경우 출력에는 충돌하는 필드 포함된 마지막 입력 문서 의 값이 포함됩니다.
예시 | 결과 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| | ||||||||
| | ||||||||
| | ||||||||
| |
예시
이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
다음 파이프라인 $replaceWith의 $mergeObjects를 사용하여 각 영화의 imdb 및 tomatoes.critic 하위 문서를 단일 ratings 문서 로 병합합니다. 두 하위 문서 모두 rating 필드 포함하므로 $mergeObjects이(가) imdb 등급을 tomatoes.critic 등급으로 덮어씁니다. 각 하위 문서의 고유 필드는 결과에 유지됩니다.
db.movies.aggregate( [ { $match: { genres: "Action", year: 2010, "imdb.rating": { $exists: true }, "tomatoes.critic.rating": { $exists: true } } }, { $sort: { title: 1 } }, { $limit: 5 }, { $replaceWith: { title: "$title", year: "$year", ratings: { $mergeObjects: [ "$imdb", "$tomatoes.critic" ] } } } ] )
이전 파이프라인의 경우:
$match는 기존imdb.rating및tomatoes.critic.rating가 있는 2010의 액션 영화를 필터링합니다.$sort는title을 기준으로 문서를 알파벳순으로 정렬합니다.$limit가독성을 높이기 위해 출력을 5 문서로 제한합니다.$replaceWith는$mergeObjects를 사용하여$imdb와$tomatoes.critic를ratings필드 로 병합합니다.두 하위 문서 모두
rating필드 포함하고 있으므로,$mergeObjects는tomatoes.critic의 값(마지막 인수)을 사용합니다.imdb의 고유 필드votes및id,tomatoes.critic의numReviews및meter는 모두 보존됩니다.