デフォルトの_id
はなぜですか 24文字の16進文字列?
主キーとして生成されるデフォルトの一意の識別子(_id
)MongoDBドキュメントの場合、ObjectId
です。 。これは12バイトのバイナリ値であり、多くの場合24文字の16進文字列として表され、MongoDBでサポートされている標準のフィールドタイプの1つですBSON仕様
。
ObjectIdの12バイトは、以下を使用して構築されます。
- Unixエポックからの秒数を表す4バイトの値
- 3バイトのマシン識別子
- 2バイトのプロセスID
- 3バイトのカウンター(ランダムな値で始まる)
ObjectIdの重要性は何ですか?
ObjectIds(またはGUID に従って生成された同様の識別子 式)分散システムで一意の識別子を個別に生成できるようにします。
複数のアプリケーションサーバー(またはシャードクラスター )。シーケンスカウンターのような中央調整のボトルネックは必要ありません(たとえば、自動インクリメントの主キーの場合のように)。また、新しい識別子が複製。
ObjectIdは通常、MongoDB クライアントドライバー
によって生成されます。 、ただし、クライアントドライバーまたはアプリケーションコードが、または_id
をまだ追加していない場合は、MongoDBサーバーで生成することもできます。 フィールド。
デフォルトのObjectIdを使用する必要がありますか?
いいえ。使用するのに適した一意の識別子がある場合は、いつでも_id
に独自の値を指定できます。 。これは、単一の値または複数のフィールドを使用する複合値のいずれかです。
_id
の主な制約 値は、コレクションに対して一意である必要があり、_id
を更新または削除できないことです。 既存のドキュメントの場合。