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

ObjectId()

項目一覧

  • 説明
  • 互換性
  • 構文
  • メソッド
  • 動作
ObjectId(<value>)

重要

mongosh メソッド

このページでは、 mongosh メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

新しいObjectId を返します。12バイトの ObjectId は、次の要素で構成されています。

  • Unix エポックからの秒数で測定される ObjectId の作成を表す 4 バイトのタイムスタンプ。

  • プロセスごとに 1 回生成される 5 バイトのランダム値。このランダム値はマシンとプロセスに固有です。

  • ランダム値で初期化される 3 バイトのインクリメント カウンター。

タイムスタンプとカウンターの値では、最上位バイトがバイトシーケンスの最初に表示されます(ビッグエンディアン)。これは、再下位バイトが最初に表示される(リトルエンディアン)他の BSON 値との相違点です。

ObjectId の作成に整数値が使用される場合は、その整数がタイムスタンプに置き換わります。

次の環境でホストされる配置には ObjectId() を使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

ObjectId() は、次のいずれかを入力として使用できます。

入力タイプ
説明
hexadecimal
任意。新しい ObjectId の 24 文字の 16進数文字列値。
integer
任意。整数値(秒単位)が UNIXエポック に追加され、新しいタイムスタンプが作成されます。

ObjectId() には以下のメソッドがあります。

メソッド
説明
オブジェクトのタイムスタンプ部分を Date で返します。
ObjectId を 16進数文字列 として返します。

MongoDB 5.0 以降、mongosh は、レガシーの mongo shell を置き換えます。ObjectId()メソッドは、mongosh とレガシー shell の mongo では異なる動作をします。レガシー メソッドの詳細については、「レガシー mongo Shell」を参照してください。

新しい ObjectId を生成するには、引数なしでObjectId()を使用します。

newObjectId = ObjectId()

この例では、newObjectId の値は次のとおりです。

ObjectId("507f1f77bcf86cd799439011")

ObjectId を 16進数文字列として返すには、 toString() メソッドを使用します。

ObjectId("507f191e810c19729de860ea").toString()

このメソッドは以下を返します。

507f191e810c19729de860ea

カスタム Date を使用してObjectId を指定できます。

1

内部的には、 Date オブジェクトは、64 UNIX エポック からのミリ秒数を表す符号付き ビット整数として保存されます。 。詳しくは、 Date()を参照してください。

myDate = new Date( "2024-01-01" )
2
timestamp = Math.floor( myDate / 1000 )
3

ObjectId.getTimestamp()を使用して日付を確認できます。

newObjectId = ObjectId(timestamp)
ObjectId("6592008029c8c3e4dc76256c")

ObjectId のタイムスタンプを調整したい場合は、整数を使用して新しい ObjectId を生成します。

newObjectId = ObjectId(32)

ObjectId の値は次のようになります。

ObjectId("00000020f51bb4362eee2a4d")

例で示した ObjectId は、次のように構成されています。

  • 4 バイトのタイムスタンプ、 00000020

  • 5 バイトのランダム要素、 f51bb4362e

  • 3 バイトのカウンター、 ee2a4d

ObjectId の最初の 4 バイトは UNIXエポックからの秒数です。この例では、ObjectId タイムスタンプは 00000020、16 進数では 32 になります。

16進文字列を使用して ObjectId を指定する場合は、ObjectId()を呼び出す際に、ユニークな24文字の16進値を渡します。

newObjectId = ObjectId("507f191e810c19729de860ea")

Tip

以下も参照してください。

戻る

HexData