English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDBObjectId

前の章では、MongoDBのObjectIdを使用していました。本章では、ObjectIdの構造について学びます。

ObjectIdは以下のようになります12バイトのBSON形式は以下の構造を持っています-

  • 前4バイトはUnix新世紀からの秒数を表します

  • 次に3バイトはマシン識別子です

  • 次に2バイトはプロセスIDで構成されています

  • 最後に3バイトはランダムなカウンタ値です

MongoDBはObjectIdsを使用しています_id各ドキュメントフィールドのデフォルト値は、ドキュメントを生成する際に生成されます。ObjectIdの複雑な組み合わせにより、すべての_idフィールドがユニークになります。

新しいObjectIdの作成

新しいObjectIdを生成するには以下のコードを使用してください-

>newObjectId = ObjectId()

上記の文は以下のユニークに生成されたIDを返します-

ObjectId("5349b4ddd2781d08c09890f3")

除いて、MongoDBが生成するObjectIdを提供する以外に、12バイトのID-

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

ドキュメントの作成時間のタイムスタンプ

由于_id ObjectIdはデフォルトで4バイトのタイムスタンプは、ほとんどの場合、ドキュメントの作成時間を保存する必要はありません。getTimestampメソッドを使用してドキュメントの作成時間を取得できます-

>ObjectId("5349b4ddd2781d08c09890f4).getTimestamp()

これによりISO日付形式でこのドキュメントの作成時間が返されます-

ISODate("2014-04-12T21:49:17Z")

ObjectIdをStringに変換する

ある場合、String形式のObjectId値が必要になるかもしれません。ObjectIdを文字列形式に変換するには以下のコードを使用してください-

>newObjectId.str

上記のコードはGuidの文字列形式を返します-

5349b4ddd2781d08c09890f3