Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$createObjectId(集計)(式演算子)

バージョン8.3の新機能

$createObjectId

新しいランダムなObjectId() 値を生成します。

$createObjectIdを使用して、集計パイプラインまたは式ベースのアップデートで一意の ObjectId 値を生成します。

例では、新しい識別子フィールドを生成したり、既存のid 値を置き換えたりすることで、他のステージがドキュメントを区別できるようになります。これには、_id など、安定した$graphLookup 値に依存する演算子が含まれます。

$createObjectId の構文は次のとおりです。

{
$createObjectId: { }
}

注意

引数には空のオブジェクト({})を使用する必要があります。

$createObjectId は、次のように動作します。

Argument
動作

{}

その他の値

操作はFailedToParse で失敗します。

Tip

既存の値を ObjectId に変換するには、$toObjectId を使用します。

このページの例では、sample_mflixサンプルデータセットのデータを使用します。このデータセットを自己管理型MongoDB配置にロードする方法の詳細については、サンプルデータセットをロードする を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。

この例では、ビューに ObjectId 値を追加することで、他の集計ステージは安定した _id値に依存できます。

sample_mflixデータベースに、元の _idフィールドを非表示にする moviesコレクションに対するビューを作成します。

db.createView(
"moviesView",
"movies",
[
{ $project: { _id: 0, title: 1, cast: 1 } }
]
)

_id_idドキュメントに$graphLookup _idフィールドがなくなりました。このビューでは、 に依存するステージは期待どおりに動作しません。例、 のようなグラフ走査ステージでは、訪問されたドキュメントを追跡し、結果を重複除外するために内部的に を使用します。

安定した識別子を必要とするステージでこのビューを使用するには、 を持つ一意の フィールドを追加する 2 番目のビューを作成します。_id$createObjectId

db.createView(
"moviesViewWithId",
"moviesView",
[
{
$project: {
_id: { $createObjectId: {} }, // unique id
title: 1,
cast: 1
}
}
]
)

moviesViewWithId内の各ドキュメントを個別のノードとして扱う集計を実行できるようになりました。例、次の ステージでは、各映画とキャスト$graphLookup メンバーを共有する他の映画が検索されます。

db.movies.aggregate( [
{
$graphLookup: {
from: "moviesViewWithId",
startWith: "$cast",
connectFromField: "cast",
connectToField: "cast",
as: "relatedMovies"
}
}
] )

このパイプラインでは、 は ビュー内の各ドキュメントが に一意の$createObjectId ObjectId_id 値を持つことを確認します。安定識別子に依存するステージでは、ドキュメントを正しく区別できるようになります。

戻る

$covarianceSamp

項目一覧