AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

$mergeObjects (누산기 연산자)

$mergeObjects

각 그룹에 대한 입력 문서를 결합하여 생성된 문서를 반환합니다.

$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 } }] )

이전 파이프라인의 경우:

  • $group는 title으로 문서를 그룹하고 $mergeObjects를 사용하여 각 소스의 data 하위 문서를 병합합니다. FilmCritic 및 ViewerVault 문서에 다른 필드 이름이 포함되어 있기 때문에, 병합된 결과에는 양쪽 소스에서의 모든 필드가 포함됩니다.

  • $sort 결과를 제목을 기준으로 가나다 순으로 정렬합니다.

이 페이지 평가하기

이 페이지의 내용