Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$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構文を使用するサブクエリの詳細については、「簡潔な構文を使用した相関サブクエリ 」を参照してください。

戻る

$densify