$toObjectId (ObjectId への変換)

最終更新:2026-10-09

$toObjectId (ObjectId への変換)

$toObjectId は 24 文字の 16 進文字列を ObjectId に変換します。結合で最もよく使われる変換です。代表的な用途は、CSV や API からインポートした文字列 ID を $lookup 用の ObjectId にキャストしたり、$match 内で文字列の _id を ObjectId と比較したりすることです。文字列は有効な ObjectId リテラルである必要があり、違うと変換はエラーになります。null は null のままです。無効な入力をガードするには onError 付きの $convert を優先してください。

カテゴリ集合・条件・変換
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $toObjectId: <expression> }

⚙️ パラメータ

式24 文字の16進文字列。

戻り値:ObjectId。入力が null の場合は null

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $toObjectId: 結合用に文字列 ID をキャスト
db.orders.aggregate([
  { $project: {
      uid: { $toObjectId: '$userIdStr' }
  } }
])

出力:

{ '_id': 1, 'uid': { '$oid': '64b7f1c2e4b0a1b2c3d4e5f6' } }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q無効な文字列の場合は?
Aエラーになります。$convert の onError なら代わりにフォールバックを返せます。
Qなぜ $lookup が一致しないのですか?
Aたいてい型の不一致です — 片方が文字列で他方が ObjectId になっています。先に $toObjectId で揃えてください。
Q空文字列は?
Anull になるのではなくエラーになります。先に $ifNull で処理してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%