AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$mergeObjects (창 함수)

$mergeObjects

버전 8.3에 추가 되었습니다.

창 에서 입력 문서를 병합하여 만든 문서 반환합니다.

참고

명확화

이 페이지에서는 창 함수로 사용되는 경우의 $mergeObjects에 대해 설명합니다.

다음과 같은 다른 컨텍스트에서도 $mergeObjects를 사용할 수 있습니다.

{
$setWindowFields: {
output: {
<outputField>: {
$mergeObjects: <document>,
window: {
<documents|range>: [ "unbounded", <upper> ]
}
}
}
}
}

참고

$setWindowFields의 sortBy 옵션은 창 상한이 "unbounded"이거나 window가 생략된 경우 선택 사항입니다. sortBy는 "current"과 같이 창 상한이 "unbounded"이 아닌 경우에 필요합니다.

sortBy을(를) 생략하면 $mergeObjects이(가) 충돌하는 필드 이름을 해결하는 순서가 보장되지 않습니다.

필드
유형
필요성
설명

<document>

표현식

필수 사항

문서 로 평가되는 필드 이름 또는 표현식 . $percentile은 창 에 있는 모든 문서의 문서 값을 병합합니다.

window

문서

옵션

$percentile가 작동하는 문서 창 지정합니다. 하한은 "unbounded"이어야 합니다. 생략하면 창 에 파티션에 있는 모든 문서가 포함됩니다.

$mergeObjects 제거할 수 없는 창만 지원하므로 하한은 "unbounded"입니다. 하한이 "unbounded"이 아닌 창 지정하면 작업은 오류를 반환합니다.

$mergeObjects null 입력 값을 무시합니다. 모든 입력 값이 null인 경우, $mergeObjects는 빈 문서 { }를 반환합니다.

$mergeObjects 문서를 병합할 때 필드 값을 덮어씁니다. 여러 입력 문서에 동일한 필드 이름이 포함된 경우 출력에는 충돌하는 필드 포함된 마지막 입력 문서 의 값이 포함됩니다.

productUpdates collection을 만듭니다.

db.productUpdates.insertMany( [
{ _id: 1, product: "gadget", date: ISODate("2024-01-01"), specs: { color: "blue" } },
{ _id: 2, product: "gadget", date: ISODate("2024-01-02"), specs: { size: "medium" } },
{ _id: 3, product: "gadget", date: ISODate("2024-01-03"), specs: { weight: 0.5 } },
{ _id: 4, product: "widget", date: ISODate("2024-01-01"), specs: { color: "red" } },
{ _id: 5, product: "widget", date: ISODate("2024-01-02"), specs: { material: "plastic" } }
] )

각 문서 새 사양 필드를 추가하는 제품 업데이트 나타냅니다. 각 업데이트 specs 하위 문서에 서로 다른 필드 이름을 제공하기 때문에, $mergeObjects은 창 확장됨에 따라 전체 사양 프로필을 누적할 수 있습니다.

다음 파이프라인 $setWindowFields의 $mergeObjects를 사용하여 창 에 새 사양이 추가될 때 누적적으로 업데이트되는 제품 사양 목록을 반환합니다. 각 문서 에 대해 cumulativeSpecs에는 현재 문서 포함하여 모든 업데이트의 병합된 사양이 포함되어 있습니다.

db.productUpdates.aggregate( [
{
$setWindowFields: {
partitionBy: "$product",
sortBy: { date: 1 },
output: {
cumulativeSpecs: {
$mergeObjects: "$specs",
window: {
documents: [ "unbounded", "current" ]
}
}
}
}
},
{ $sort: { product: 1, date: 1 } },
{ $project: { _id: 0, product: 1, date: 1, specs: 1, cumulativeSpecs: 1 } }
] )

이전 파이프라인의 경우:

  • $setWindowFields는 문서를 product를 기준으로 분할하고 date를 기준으로 오름차순으로 정렬합니다.

  • $mergeObjects unbounded에서 current 창 사용하여 각 파티션의 시작 부분부터 현재 문서 까지 모든 specs 문서를 병합하여 실행 누적 사양을 생성합니다.

  • $sort는 최종 결과를 product 및 date를 기준으로 오름차순으로 정렬합니다.

이 페이지 평가하기

이 페이지의 내용