識別子

ObjectId生成日時と構造も確認

生成・解析・日付境界から操作を選択してください。

ObjectId生成

入力

結果

バイト構造

4バイトの符号なしタイムスタンプ、5バイトの乱数値、3バイトのカウンター。乱数部分からマシンIDやPIDは復元できません。

入力はこのブラウザー内で処理され、サーバーには送信されません。

オプション

デコード:1行に24桁の16進ObjectIdを1つ入力。生成:空欄なら現在時刻、または時刻を1つ入力。下限値:1行に時刻を1つ入力。整数のUnix秒、または秒とZか±HH:mmを含むISO時刻を使用します。空白は除去しません。

最大1,000行、100,000 UTF-16コード単位。生成数は1~1,000個。時刻の範囲はUnix秒で0~4294967295です。

入力するかサンプルを読み込んでください。

ObjectId生成は、データベースを用意する前にAPIのテスト値を作りたいときに役立ちます。ログに残った値は解析モードに貼り付ければ、先頭の時刻部分を確認できます。

形式が正しい値でも、そのIDの文書が存在するとは限りません。保存日時を正確に知る必要がある場合は、IDとは別の日時フィールドを使ってください。

ObjectId生成で確認できること

現在の仕様に沿って読む

ObjectId生成では、4バイトの時刻、5バイトのランダム値、3バイトのカウンターを分けて表示します。中央部分からマシン名やプロセスIDを復元できるとは扱いません。

12バイトを時刻4、ランダム値5、カウンター3に分けた図。

不正な値も行番号付きで残す

一括解析は成功した行だけを拾いません。元の入力とエラーを残すので、ログのどこを直すべきかを確認できます。

有効な2行の間に不正な入力行が残る検証結果。

用途と時刻を先に決める

01

検索用の値を区別する

生成は新しいテストID、解析は既存値の確認、日付境界は末尾をゼロにした比較用の値を作ります。

  • 日付境界を新規文書の一意なIDとして使わないでください。
02

日時を明示する

生成時の入力が空なら現在の秒を使います。指定する場合はUnix秒か、Zまたは時差を含むISO日時を入力します。

  • ミリ秒は保存できません。整秒の日時を指定します。
03

エラーを確認して保存する

解析は1行に24桁の16進数を入力します。表示行数の上限と出力全体の行数は別です。 解析と日付境界は、初期設定では編集の350 ms後に自動更新します。自動変換をオフにすると、変換ボタンまたはCtrl/Cmd+Enterで実行できます。生成は明示的な操作が必要で、自動では実行されません。

  • サンプルとクリアは置換プレビューを経由し、適用後は1回取り消せます。

生成から調査まで

まとめてテスト値を作成

1回に1~1,000件を生成します。暗号学的乱数で初期値を用意し、同じ実行コンテキスト内でカウンターを進めます。

時刻とバイトを確認

ObjectId解析では符号なしビッグエンディアンのUnix秒を読み、タイムスタンプに対応するUTC日時、ランダム値、カウンターを表示します。

範囲検索の境界

指定秒のプレフィックスにゼロを付けたBSON値を作ります。データベースへの問い合わせ自体は実行しません。

全行をエクスポート

生成結果は1行1IDのTXT、解析と境界の結果は元の入力とエラーを含むJSONです。未表示の行も含まれます。

受け付ける形式と上限

厳密な24桁
ASCIIの16進文字のみを受け付け、大文字は小文字にそろえます。空白、引用符、ObjectIdのラッパー、空行はエラーです。
秒数の範囲
Unix秒の0~4,294,967,295に対応します。上限はUTCの2106年2月7日06:28:15です。ISO日時にはタイムゾーンが必要です。
処理件数
入力は100,000 UTF-16コード単位・1,000行まで、生成数は1~1,000の整数です。超過時は一部を切り取らず、処理を拒否します。
厳密な全順序ではない
時刻の精度は1秒で、クライアントごとに時計が異なります。カウンターは16,777,215の次にゼロへ戻り、絶対的な一意性は保証しません。
ブラウザー内で完結
MongoDBへの接続や存在確認は行いません。生成にはブラウザーの暗号機能が必要です。ゼロ末尾の境界値は挿入用IDではありません。

ObjectId生成の疑問

日付だけで範囲を指定するにはどうすればよいですか?

日付境界モードで開始と終了の秒をそれぞれ変換し、生成された比較値を範囲条件に使えます。終了を含めるかどうかはクエリ側で決めます。境界値は一意性を目的としていません。

Cast to ObjectId failedはなぜ発生しますか?

このページでは24桁以外、16進数以外、ラッパーや余分な空白を含む行は無効です。アプリのCastErrorではIDとして渡した値そのものも確認してください。形式検証だけでルーティングの問題は解決できません。

ObjectIDから作成日を読み取れますか?

先頭4バイトをUnix秒として読み取れます。ただしIDを生成した側の時計や指定時刻による値なので、実際の保存時刻とは限りません。

一度に何件まで生成できますか?

ObjectId生成は1回に1~1,000件です。各値のカウンターが進み、コピーやダウンロードは表示済み行に限定されません。

データベースへの接続は必要ですか?

不要です。ObjectId生成と解析はローカルに実行されます。そのため、解析に成功しても指定IDの文書が存在するかは分かりません。

気になる解析結果がありますか?

ObjectId生成を試す

既知の値や少量のテストIDを使い、時刻とフィールドを確認してから保存してください。