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()
は、次のいずれかを入力として使用できます。
入力タイプ | 説明 |
---|---|
| 任意。新しい ObjectId の 24 文字の 16進数文字列値。 |
| 任意。整数値(秒単位)が UNIXエポック に追加され、新しいタイムスタンプが作成されます。 |
メソッド
ObjectId()
には以下のメソッドがあります。
メソッド | 説明 |
---|---|
オブジェクトのタイムスタンプ部分を Date で返します。 | |
ObjectId を 16進数文字列 として返します。 |
動作
MongoDB 5.0 以降、mongosh
は、レガシーの mongo
shell を置き換えます。ObjectId()
メソッドは、mongosh
とレガシー shell の mongo
では異なる動作をします。レガシー メソッドの詳細については、「レガシー mongo Shell」を参照してください。
例
新しい ObjectId の生成
新しい ObjectId を生成するには、引数なしでObjectId()
を使用します。
newObjectId = ObjectId()
この例では、newObjectId
の値は次のとおりです。
ObjectId("507f1f77bcf86cd799439011")
16進数文字列を返す
ObjectId を 16進数文字列として返すには、 toString()
メソッドを使用します。
ObjectId("507f191e810c19729de860ea").toString()
このメソッドは以下を返します。
507f191e810c19729de860ea
日付を指定
カスタム Date を使用してObjectId を指定できます。
指定した日付の変数を設定
内部的には、 Date オブジェクトは、64 UNIX エポック からのミリ秒数を表す符号付き ビット整数として保存されます。 。詳しくは、 Date()
を参照してください。
myDate = new Date( "2024-01-01" )
timestamp
を引数として新しい ObjectId を設定します
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進数文字列の指定
16進文字列を使用して ObjectId を指定する場合は、ObjectId()
を呼び出す際に、ユニークな24文字の16進値を渡します。
newObjectId = ObjectId("507f191e810c19729de860ea")