私はmongodbとスタックオーバーフローに不慣れです。
MongodbコレクションIDが24の16進文字である理由を知りたいですか?その重要性は何ですか?
_id
が24文字の16進文字列であるのはなぜですか?MongoDBドキュメントの主キー(_id
)として生成されるデフォルトの一意の識別子は ObjectId です。これは12バイトのバイナリ値であり、多くの場合24文字の16進文字列として表され、MongoDBでサポートされている標準のフィールドタイプの1つです BSON仕様 。
ObjectIdの12バイトは、以下を使用して構築されます。
ObjectId(または [〜#〜] guid [〜#〜] 式に従って生成された同様の識別子)を使用すると、分散システムで一意の識別子を個別に生成できます。
複数のアプリケーションサーバー(または シャードクラスター 内の複数のデータベースノード)にスケールアップする場合、一意のIDを個別に生成する機能が非常に重要になります。シーケンスカウンターのような中央調整のボトルネックは必要ありません(たとえば、自動インクリメントの主キーの場合のように)。また、新しい識別子が次のようになるリスクなしに、新しいドキュメントを挿入する必要があります。重複。
ObjectIdは通常、MongoDB クライアントドライバー によって生成されますが、クライアントドライバーまたはアプリケーションコードが存在する場合、または_id
フィールドがまだ追加されていない場合は、MongoDBサーバー上で生成することもできます。
いいえ。使用するのに適した一意の識別子がある場合は、いつでも_id
に独自の値を指定できます。これは、単一の値または複数のフィールドを使用する複合値のいずれかです。
_id
値の主な制約は、コレクションに対して一意である必要があり、既存のドキュメントの_id
を更新または削除できないことです。