Mongodb-objectid

提供:Dev Guides
移動先:案内検索

MongoDB-ObjectId

これまでのすべての章でMongoDBオブジェクトIDを使用してきました。 この章では、ObjectIdの構造を理解します。

*ObjectId* は、次の構造を持つ12バイトのBSONタイプです-
  • UNIXエポックからの秒数を表す最初の4バイト
  • 次の3バイトはマシン識別子です
  • 次の2バイトは process id で構成されます
  • 最後の3バイトはランダムなカウンター値です

MongoDBは、ドキュメントの作成中に生成される各ドキュメントの _id フィールドのデフォルト値としてObjectIdsを使用します。 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を文字列に変換する

場合によっては、文字列形式のObjectIdの値が必要になることがあります。 文字列のObjectIdを変換するには、次のコードを使用します-

>newObjectId.str

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

5349b4ddd2781d08c09890f3