AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$documents(集計ステージ)

$documents

バージョン6.0の新機能。

入力値からリテラル ドキュメントを返します。

$documents ステージの形式は次のとおりです。

{ $documents: <expression> }
  • $documentsはデータベースレベルの集計パイプラインでのみ使用できます。

  • 集計パイプラインの最初のステージとして$documentsを使用する必要があります。

の使用例 については以下を参照してください。

$documents は、オブジェクトの配列に変換される任意の有効な 式 を受け入れます。 これには以下が含まれます。

  • システム変数( $$NOWや$$SEARCH_METAなど)

  • $let 式

  • $lookup式からのスコープ内の変数

現在のドキュメントに解決されない式$myFieldや$$ROOTなど)はエラーになります。

テスト コレクションを作成せずに、パイプライン ステージのテストとデバッグ データを作成します。

db.aggregate( [ { $documents: [ { x: 10 }, { x: 2 }, { x: 5 } ] }, { $bucketAuto: { groupBy: "$x", buckets: 4 } } ])

集計式ではコレクションを指定しません。 強調表示された$documentsステージの入力データを$bucketAutoステージへの入力として使用します。

[ { _id: { min: 2, max: 5 }, count: 1 }, { _id: { min: 5, max: 10 }, count: 1 }, { _id: { min: 10, max: 10 }, count: 1 }]

$documentsを使用してコレクション内のドキュメントを他のデータと相関させ、 $lookupの出力を変更します。

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

db.locations.insertMany( [ { zip: 94301, name: "Palo Alto" }, { zip: 10019, name: "New York" } ] )

ドキュメントを変換するためのデータソースとして$documentsを使用します。

db.locations.aggregate( [ { $match: {} }, { $lookup: { localField: "zip", foreignField: "zip_id", as: "city_state", pipeline: [ { $documents: [ { zip_id: 94301, name: "Palo Alto, CA" }, { zip_id: 10019, name: "New York, NY" } ] } ] } } ] )

出力は、 locationsコレクション内のデータと$documentsパイプライン ステージ内の値を相関させます。

[ { _id: ObjectId("618949d60f7bfd5f5689490d"), zip: 94301, name: 'Palo Alto', city_state: [ { zip_id: 94301, name: 'Palo Alto, CA' } ] }, { _id: ObjectId("618949d60f7bfd5f5689490e"), zip: 10019, name: 'New York', city_state: [ { zip_id: 10019, name: 'New York, NY' } ] }]
  • zipフィールドはzip_idフィールドに対応します

  • asパラメータは新しい出力フィールドを作成します

$lookup 構文を使用するサブクエリの詳細については、簡潔なシンタックスを使用した相関サブクエリ を参照してください

このページを評価