AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$mergeObjects(アキュムレータ演算子)

$mergeObjects

各グループの入力ドキュメントを組み合わせて作成したドキュメントを返します。

$mergeObjectsアキュムレータは、次のステージで使用できます。

注意

曖昧さ回避

このページでは、アキュムレータとして使用する場合の$mergeObjects について説明します。アキュムレータは、入力ドキュメントのグループにわたる集計値を返します。

また、ドキュメントの配列を$mergeObjects (expression) 1 つのドキュメントにマージする を使用することもできます。

{ $mergeObjects: <expression> }

<expression>は、ドキュメントを評価する任意の有効な式にすることができます。

$mergeObjects は null 入力値を無視します。すべての入力値が null の場合、$mergeObjects は空のドキュメント{ } を返します。

$mergeObjects は、ドキュメントをマージするときにフィールド値を上書きします。複数の入力ドキュメントが同じフィールド名を含む場合、出力には、競合するフィールドを含む最後の入力ドキュメントの値が含まれます。

movieReviews コレクションを作成します。

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

各映画には2つのドキュメントがあります:

  • rating フィールドと votes フィールドを持つ Filmcritic の 1 つの。

  • tomatometer フィールドと audienceScore フィールドを持つ viewVault の 1 つ。

2 つのソースドキュメントは異なるフィールド名を持つため、$mergeObjects はそれらを 4 つのフィールドすべてを含む完全なプロファイルに結合できます。

次のパイプラインでは、$mergeObjects $groupステージで を使用して、各ソースからのレビュー データを各映画の 1 つのドキュメントに結合します。

db.movieReviews.aggregate( [
{
$group: {
_id: "$title",
allRatings: { $mergeObjects: "$data" }
}
},
{ $sort: { _id: 1 } }
] )

上記のパイプラインでは、

  • $groupはドキュメントをtitle $mergeObjectsdataでグループ化し、 を使用して各ソースからの サブドキュメントをマージします。 Filmcritic ドキュメントと ViewerVault ドキュメントには異なるフィールド名が含まれているため、マージされた結果には両方のソースのすべてのフィールドが含まれます。

  • $sort は、結果をタイトルのアルファベット順にソートします。

このページを評価