MongoDB オブジェクト ID
前の章では、MongoDB のオブジェクト ID (ObjectId) を使用しました。
この章では、ObjectId の構造を理解します。
ObjectId は、次の形式の 12 バイトの BSON 型データです:
最初の 4 バイトはタイムスタンプを表します
次の 3 バイトはマシン識別コードです
その後に 2 バイトが続きますプロセス ID (PID) の
最後の 3 バイトは乱数です。
MongoDB に保存されるドキュメントには「_id」キーが必要です。このキーの値は任意の型にすることができ、デフォルトは ObjectId オブジェクトです。
コレクション内の各ドキュメントを一意に識別できるように、コレクション内の各ドキュメントには一意の「_id」値があります。
MongoDB が他の従来の方法 (自動的に増加する主キーなど) の代わりに ObjectId を使用する主な理由は、次のとおりです。 サーバー上の主キー値を同期して自動的に増やすことは、手間と時間がかかります。
新しい ObjectId を作成する
次のコードを使用して新しい ObjectId を生成します:
>newObjectId = ObjectId()
上記のステートメントは、次の一意に生成された ID を返します:
ObjectId("5349b4ddd2781d08c09890f3")
生成された ID を使用して、MongoDB によって自動的に生成された ObjectId を置き換えることもできます。
>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
ドキュメント作成のタイムスタンプ
ObjectId は 4 バイトのタイムスタンプを保存するため、ドキュメントのタイムスタンプ フィールドを保存する必要はありません。getTimestamp 関数を通じてドキュメントの作成時刻を取得できます:
>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()。
上記のコードは、ISO 形式でドキュメントの作成時間を返します:
ISODate("2014-04-12T21:49:17Z")
ObjectId を文字列に変換
場合によっては、ObjectId を文字列形式に変換する必要がある場合があります。次のコードを使用できます:
>new ObjectId().str
上記のコードは、Guid 形式の文字列を返します:
5349b4ddd2781d08c09890f3